一、redis简介
1、Redis:键值对类型的内存数据库;应用于高并发和实时请求的场景;
2、Redis常用数据类型:
(1) string(基本数据类型)
(2)hash 注:hash中的数据(key-value)只能为字符串类型
(3)list
(4)set 不重复,无序
(5)sorted set ,不重复,有序
3、特点:
(1)高性能 (读速度11W次/s,写速度约8W次/s)
(2)原子性 (可保证数据的准确性)
(3)持久存储(两种方式:RDB快照,AOF日志)
(4)主从结构(master-slave,负载均衡,高可用)
(5)支持集群(3.0版本)
二、部署
1、单机部署
(1)安装依赖
yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make
(2)下载redis的安装包,然后解压到指定目录,编译、配置
# tar -zxvf redis-3.0.0.tar.gz -C /usr/local # mv redis-3.0.0 redis # cd redis # make # make install
(3)修改配置文件
# cp redis.conf /etc # vi /etc/redis.conf #修改如下两个参数即可 daemonize yes #设置为后台进程 logfile "/usr/local/redis/log" #设置日志目录
(4)服务启动与关闭
启动redis服务:redis-server /etc/redis.conf
连接到redis中:redis-cli -h 127.0.0.1 -p 6379
停止redis服务:redis-cli shutdown
2、集群部署
(1)集群规划
要让集群正常工作至少需要3个主节点,每个主节点对应需要一个从节点,因此在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下(限于个人电脑配置,仅用一台机器进行模拟,生产环境可以参考):
192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005
(2)下载、解压、编译,参考单机模式
下载地址: http://download.redis.io/releases/redis-3.0.0.tar.gz # tar -zxvf redis-3.0.0.tar.gz -C /usr/local #与单机模式相同,注意安装依赖 # mv redis-3.0.0.tar.gz redis3.0 # cd /usr/local/redis3.0 # make # make install
(3)创建集群所需的目录
mkdir -p /usr/local/cluster cd /usr/local/cluster mkdir 7000 mkdir 7001 mkdir 7002 mkdir 7003 mkdir 7004 mkdir 7005
(4)修改配置文件
# cp /usr/local/redis3.0/redis.conf /usr/local/cluster # vim redis.conf ##修改配置文件中的下面选项 port 7000 daemonize yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes ##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7000/7001/7002/7003/7004/7005目录下面 cp /usr/local/cluster/redis.conf /usr/local/cluster/7000 cp /usr/local/cluster/redis.conf /usr/local/cluster/7001 cp /usr/local/cluster/redis.conf /usr/local/cluster/7002 cp /usr/local/cluster/redis.conf /usr/local/cluster/7003 cp /usr/local/cluster/redis.conf /usr/local/cluster/7004 cp /usr/local/cluster/redis.conf /usr/local/cluster/7005 #注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称
(5)启动、验证
#依次启动各个Redis实例的命令如下: cd /usr/local/cluster/7000 redis-server redis.conf cd /usr/local/cluster/7001 redis-server redis.conf cd /usr/local/cluster/7002 redis-server redis.conf cd /usr/local/cluster/7003 redis-server redis.conf cd /usr/local/cluster/7004 redis-server redis.conf cd /usr/local/cluster/7005 redis-server redis.conf #验证: ps -ef|grep redis #若有cluster模式的提示,说明成功
(6)创建集群
#安装依赖,否则会报错 yum -y install ruby rubygems gem install redis #创建集群 cd /usr/local/redis3.0/src ./redis-trib.rb create --replicas 1 192.168.1.160:7000 192.168.1.160:7001 192.168.1.160:7002 192.168.1.160:7003 192.168.1.160:7004 192.168.1.160:7005 #根据提示输入yes,集群创建完毕会有提示
(7)启动集群
# redis-cli -c -p 7000 #说明:-c指明使用集群的客户端,-p指明端口
3、集群的维护
(1)动态添加节点:
主节点:创建一个空主节点后,需将某些哈希槽移动到这个空节点里面
从节点:创建一个空节点后,把这个新节点设置成集群中某个主节点的复制品。
(2)动态删除节点:
主节点:先转移哈希槽,然后删除;
从节点:直接删除
三、Redis理论知识
1、数据库的特点
(1)多数据库 :默认从0开始16个,不支持自定义;(可修改数据库数目与select切换数据库,用的不多)
多个数据库之间并不是完全隔离的
(2)flushall 与 flushdb
flushall:清空所有数据库中数据;
flushdb:清空当前数据库中的所有数据
(3)注意:redis数据库中没有表,如果想要获取某一类型的数据的话,需要提前对这一批数据的key进行有意义的定义
2、基本命令:
keys 表达式(?,* ,[],?) 获得符合规则的键名称
exists key 判断一个键是否存在
del key 删除键
del key1 key2 一次删除多个键
获得键值的数据类型type
返回值可能是这五种类型(string,hash,list,set,zset)
注意:redis的命令不区分大小写,键区分大小写
3、常见数据类型的操作命令
(1)String
(2)hash
(3)list
(4)set
(5)sorted set
4、实用tips
(1)set命令:如果 key 已经持有其他类型值, SET 就覆盖旧值,无视类型。
(2)条件查询:redis本身不支持条件查询,但是可以利用reids的一些特性实现类似的条件查询
(3)list使用最频繁,lpush,lpop String次之;
四、Redis进阶
1、expire
2、事务
3、sort
4、发布/订阅模式
5、pipeline
6、持久化
7、安全策略:
8、sentinel
9、主从
10、应用场景
11、优化策略
五、补充
1、一致性哈希
参考:http://www.360doc.com/content/12/0412/17/597197_203070560.shtml
http://blog.csdn.net/ymr0717/article/details/51909225
先列出题纲,后期待续。。。