Redis系列(一):小试牛刀
引言
随着互联网的高速发展,传统的关系数据库(如mysql、microsoft sql server等)已不能满足日益增长的业务需求,如商品秒杀、抢购等及时性非常强的功能,随着应用高并发的访问,会造成系统数据库崩溃,为了解决此种情况,需要引用一个缓存中间件,市面上比较常用的缓存中间件有redis 和 memcached,他们各自有自己的优缺点,但一般互联网公司大都采用mysql + redis的方式进行架构,本文主要介绍redis的概念及安装配置。
简介
概念
redis(remote dictionary server ) 是一个开源的使用 ansi c 语言编写、遵守 bsd 协议、支持网络、可基于内存亦可持久化的日志型、key-value 数据库,并提供多种语言的 api的非关系型数据库。
传统数据库遵循 acid 规则。而 nosql(not only sql 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 cap 定理。
它和memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,redis在3.0版本推出集群模式。
github 源码:
redis 官网:
特点、优势
- k、v键值存储以及数据结构存储(如列表、字典)
- 所有数据(包括数据的存储)操作均在内存中完成
- 单线程服务(这意味着会有较多的阻塞情况),采用epoll模型进行请求响应,对比nginx
- 支持主从复制模式,更提供高可用主从复制模式(哨兵)
- 去中心化分布式集群
- 丰富的编程接口支持,如python、golang、java、php、ruby、lua、node.js
- 功能丰富,除了支持多种数据结构之外,还支持事务、发布/订阅、消息队列等功能
- 支持数据持久化(aof、rdb)
对比memcache
- memcache是一个分布式的内存对象缓存系统,并不提供持久存储功能,而redis拥有持久化功能
- memcache数据存储基于lru(简单说:最近、最少使用key会被剔除),而redis则可以永久保存(服务一直运行情况下)
- memcache是多线程的(这是memcache优势之一),也就意味着阻塞情况少,而redis是单线程的,阻塞情况相对较多
- 两者性能上相差不大
- memcache只支持简单的k、v数据存储,而redis支持多种数据格式存储。
- memcache是多线程、非阻塞io复用网络模型,而redis是单线程io复用模型
安装windows版本
redis的windoms版下载地址:。
下载自己需要的版本,如下图(msi是安装版本,zip是解压版):
下载zip到本地解压(笔者解压目录为d:\program files\redis),目录如下:
开启服务,运行cmd,切换到解压目录,执行如下命令(并设置最大内存):
redis-server.exe redis.windows.conf --maxmemory 200m
效果如图所示:
开启命令行客户端,执行如下命令:
redis-cli.exe
添加和查询key-value,执行如下命令:
#设置键值 set key value #获取键值 get key
查询和设置密码,执行如下命令:
#查询密码 config get requirepass #设置密码 config set requirepass 密码
输入密码,执行如下命令:
auth 密码
以上几个命令,演示如下图所示。
注册和卸载服务,执行如下命令:
#注册安装服务 redis-server --service-install redis.windows.conf --loglevel verbose #卸载服务 #redis-server --service-uninstall
执行效果,如下图:
注册完成后,可以在计算机服务中看到该服务,如下图所示。
开启服务后,可以直接用命令行客户端进行连接。
总结
本文简单的介绍了redis的背景、概念及windows版本的安装及测试,在后续博文中,将继续讲解redis的相关内容,如果本文对你有所帮助,就是我写作的动力!感兴趣的朋友可以加关注,欢迎留言交流!