redis 的集群
Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。./redis-trib.rb create --replicas
1.redis-cluster架构图

架构细节:
(1)所有的redis节点彼此互联(PING-PONG机制),节点的fail是通过集群中超过半数的节点检测失效时才生效.

(2)存取数据时连接任一节点都可以,但集群中有一个节点fail整个集群都会fail
Redis 集群中内置了 16384 个哈希槽,当需要在Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点
2.redis集群的搭建
Redis集群中至少应该有三个节点。要保证集群的高可用,需要每个节点有一个备份机。
Redis集群至少需要6台服务器。
搭建伪分布式。可以使用一台虚拟机运行6个redis实例。需要修改redis的端口号7001-7006
首先创建/redis-cluster文件夹放置
3、搭建步骤
①删除redis中的持久化文件
cd /usr/local/redis/bin
rm -f dump.rdb
rm -f appendonly.aof
②开启集群
vim /usr/local/redis/bin/redis.conf
cluster-enable yes
③拷贝6个节点
cd /usr/local
cp -r /usr/local/redis /usr/local/redis-cluster/redis-7001
..........
④修改端口号
vim /usr/local/redis-cluster/redis-7001/bin/redis.conf
port 7001
⑤编写启动脚本
cd /usr/local/redis-cluster
vim start-all.sh:
cd /usr/local/redis-cluster/redis-7001/bin
./redis-server redis.conf
更改权限
chmod 755 start-all.sh
./start-all.sh //启动脚本
ps -ef | grep redis //查看进程
⑥安装ruby环境
cd /usr/upload
yum install ruby
yum install rubygems
gem install redis-3.0.0.gem
cd /usr/upload/redis-3.0.0/src
ll *.rb
⑦使用ruby脚本搭建redis集群
cd /usr/upload/redis-3.0.0/src
./redis-trib.rb create --replicas 1 (1 有几个从者)
192.168.61.131:7001
192.168.61.131:7002
192.168.61.131:7003
192.168.61.131:7004
192.168.61.131:7005
192.168.61.131:7006
(本机ip 和端口号)
⑧测试
1)存取数据 //链接集群
./redis-cli -c -p 7001
2)测试是否高可用
cluster nodes
关闭7001
cluster nodes
4 redis 的基本数据类型
String(字符串)
| 操作 | 命令 | 说明 |
|---|---|---|
| 增 / 改 | set k v |
设置 key 为 k,值为 v,已存在则覆盖 |
| 查 | get k |
获取 key 为 k 的值 |
| 删 | del k |
删除 key 为 k 的键值对 |
Hash(哈希)
| 操作 | 命令 | 说明 |
|---|---|---|
| 增 / 改 | hset k field value |
给 key 为 k 的哈希表,设置字段 field 的值为 value |
| 查 | hget k field |
获取 key 为 k 的哈希表中,field 字段的值 |
| 删 | hdel k field |
删除 key 为 k 的哈希表中的 field 字段 |
List(列表)
| 操作 | 命令 | 说明 |
|---|---|---|
| 增 | lpush/rpush k v... |
lpush从列表左侧插入元素,rpush从右侧插入 |
| 查 | lrange k start end |
获取列表指定范围的元素,0 -1代表查询全部 |
| 删 | lrem k count v |
删除列表中 count 个值为 v 的元素 |
Set(集合)
| 操作 | 命令 | 说明 |
|---|---|---|
| 增 | sadd k v... |
给 key 为 k 的集合添加元素,自动去重 |
| 查 | smembers k |
获取集合中所有元素 |
| 删 | srem k v |
删除集合中值为 v 的元素 |
ZSet(有序集合)
| 操作 | 命令 | 说明 |
|---|---|---|
| 增 | zadd k score v... |
给 key 为 k 的有序集合添加元素,同时指定分数 score(用于排序) |
| 查 | zrange k 0 -1 withscores |
按分数升序获取集合所有元素,withscores同时显示分数 |
| 删 | zrem k v |
删除有序集合中值为 v 的元素 |
核心记忆技巧
| 数据类型 | 增 | 查 | 删 |
|---|---|---|---|
| String | set |
get |
del |
| Hash | hset |
hget |
hdel |
| List | lpush/rpush |
lrange |
lrem |
| Set | sadd |
smembers |
srem |
| ZSet | zadd |
zrange |
zrem |
更多推荐


所有评论(0)