Redis安装与操作
Redis
Redis的安装
Redis 是 c 语言开发的。
安装 redis 需要 c 语言的编译环境。如果没有 gcc 需要在线安装。yum install gcc-c++
安装步骤:
第一步:redis 的源码包上传到 linux 系统。
第二步:解压缩 redis。
tar –zxvf redis-3.0.0.tar.gz
第三步:编译。进入 redis 源码目录。make
cd redis-3.0.0 make |
第四步:安装。make install PREFIX=/usr/local/redis
PREFIX 参数指定 redis 的安装目录。
Redis的配置文件conf复制修改到对应的位置
连接 redis
redis 的启动:
第一种前端
连接redis
退出:
redis 的第二种后端启动修改redis.conf配置文件:
因为redis.conf不是原始的配置文件,需要我们指定使用redis.conf作为配置文件
./redis-server ../conf/redis.conf
Redis五种数据类型
1、String:key-value(做缓存)
Redis 中所有的数据都是字符串。命令不区分大小写,key是区分大小写的。Redis 是单线程
的。Redis 中不适合保存内容大的数据。
get、set、
incr:加一(生成 id)
decr:减一
Keys *: 所有的 key
2、Hash:key-fields-values(做缓存)
相当于一个 key 对于一个 map,map 中还有 key-value
使用 hash 对 key 进行归类。
Hset:向 hash 中添加内容
hset setName field value
Hkeys:查看 hash 中的 key:
Hvals:查看 hash 中的 value
Hget:从 hash 中取内容
Hgetall:查看所有的 key 和 value
Hdel:删除 hash 中的 key
3、List:有顺序可重复
Lpush:添加一个 list,从左边开始添加
Rpush:从右边开始添加
Lpop 弹出元素
Rpop 弹出元素
4、Set:元素无顺序,不能重复
Srem:删除元素
还有集合运算命令,自学。
sdiff: 差集
sinter:交集
sunion:并集
5、SortedSet(zset):有顺序,不能重复
Key 命令
设置 key 的过期时间。
Expire key second:设置 key 的过期时间
Ttl key:查看 key 的有效期
Persist key:清除 key 的过期时间。Key 持久化。
Redis的持久化方案
Redis 的所有数据都是保存到内存中的。
Rdb:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis 默认支持的持久化方案。
aof 形式:append only file。把所有对 redis 数据库操作的命令,增删改操作的命令。保存到
文件中。数据库恢复时把所有的命令执行一遍即可。
在 redis.conf 配置文件中配置。
Rdb:
Aof 的配置:
两种持久化方案同时开启使用 aof 文件来恢复数据库。
Redis集群的搭建
redis-cluster 架构图
redis-cluster 投票:容错
架构细节:
(1)所有的 redis 节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带
宽.
(2)节点的 fail 是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与 redis 节点直连,不需要中间 proxy 层.客户端不需要连接集群所有节点,连接集群
中任何一个可用节点即可
(4)redis-cluster 把所有的物理节点映射到[0-16383]slot上,cluster 负责维护
node<->slot<->value
Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,
redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个
key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈
希槽映射到不同的节点
Redis 集群的搭建
Redis 集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
Redis 集群至少需要 6 台服务器。
搭建伪分布式。可以使用一台虚拟机运行 6 个 redis 实例。需要修改 redis 的端口号 7001-7006
集群搭建环境
1、使用 ruby 脚本搭建集群。需要ruby 的运行环境。
安装 ruby
yum install ruby
yum install rubygems
2、安装 ruby 脚本运行使用的包。
将 redis-3.0.0.gem.tar.gz 上传到根目录
安装
gem install redis-3.0.0.gem
创建redis-cluster文件
复制脚本
复制redis
注意:复制的redis必须是最原始的,里面不许有数据
修改redis7001、redis7002、redis7003、redis7004、redis7005、redis7006的端口号以及取消注释允许搭建集群
启动:
cd redis7001/bin ./redis-server ../conf/redis.conf cd ../../ cd redis7002/bin ./redis-server ../conf/redis.conf cd ../../ cd redis7003/bin ./redis-server ../conf/redis.conf cd ../../ cd redis7004/bin ./redis-server ../conf/redis.conf cd ../../ cd redis7004/bin ./redis-server ../conf/redis.conf cd ../../ cd redis7006/bin ./redis-server ../conf/redis.conf cd ../../
|
创建批量关闭
cd redis7001/bin ./redis-cli -p 7001 shutdown ./redis-cli -p 7002 shutdown ./redis-cli -p 7003 shutdown ./redis-cli -p 7004 shutdown ./redis-cli -p 7005 shutdown ./redis-cli -p 7006 shutdown cd ../../ |
使用ruby脚本搭建集群
./redis-trib.rb create --replicas 1 192.168.243.137:7001 192.168.243.137:7002 192.168.243.137:7003 192.168.243.137:7004 192.168.243.137:7005 192.168.243.137:7006 |
集群使用的方法
cd redis7001/bin ./redis-cli -p 7001 –c |
解释:./redis-cli -p 7001 –c 通过端口号7001的redis连接集群里的所有redis
./redis-cli -p 7001
通过端口号7001的redis
–c
集群里的所有的redis
Eclipse操作jedis
使用工具类
Jedis与spring整合
<!-- 配置单机版的jiedis --> <bean id="jedisClientPool" class="com.igeek.common.util.jedis.JedisClientPool"/>
<!-- 配置一个jedisPool对象 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="6379"/> </bean> <!-- 配置集群版的jedis --> <bean id="jedisClientCluster" class="com.igeek.common.util.jedis.JedisClientCluster"/> <!-- 配置一个jedisCluster对象 --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="7001"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="7002"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="7003"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="7004"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="7005"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.8.111"/> <constructor-arg name="port" value="7006"/> </bean> </set> </constructor-arg> </bean> |