Redis基础知识
选择切换第2个库:输入: select 1
Keys k? 就像正则表达式,列出k开头的key
FLUSHALL 清空所有数据库的key
String类型:二进制安全的,可以是任何数据,包括图片或序列化的对象,理论最大支持512M
DEL name 删除
append name 111 由张三变成zhangsan111
STRLEN name 则显示name的值zhangsan111的strlen是11
值是数字,则可加减 ,必须是数字
Incr 、decr、incrby、decrby
127.0.0.1:6379> set k2 10
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> incr k2
(integer) 11
127.0.0.1:6379> incr k2
(integer) 12
127.0.0.1:6379> decr k2
(integer) 11
127.0.0.1:6379> decr k2
(integer) 10
127.0.0.1:6379> incrby k2 3
(integer) 13
127.0.0.1:6379> incrby k2 5
(integer) 18
127.0.0.1:6379> decrby k2 4
(integer) 14
127.0.0.1:6379> decrby k2 1
(integer) 13
Getrange和setrange
127.0.0.1:6379> set k3 abc123abc
OK
127.0.0.1:6379> get k3
"abc123abc"
127.0.0.1:6379> getrange k3 2 6
"c123a"
127.0.0.1:6379> setrange k3 2 666
(integer) 9
127.0.0.1:6379> get k3
"ab6663abc"
setex (即是set with expire的意思) 键秒 ,setnx(set if not exit)
127.0.0.1:6379> setex k4 10 vaaa123
OK
mset 、mget、 msetnx
127.0.0.1:6379> mset k3 v3 k4 v4
OK
127.0.0.1:6379> mget k3 k4
1) "v3"
2) "v4"
127.0.0.1:6379> msetnx k3 v33 k4 v44 k5 v55
(integer) 0
127.0.0.1:6379> mget k3 k4 k5
1) "v3"
2) "v4"
3) (nil)
127.0.0.1:6379> msetnx k4 v44 l5 v55
(integer) 0
127.0.0.1:6379> msetnx k5 v55 k6 v66
(integer) 1
127.0.0.1:6379> mget k5 k6
1) "v55"
2) "v66"
127.0.0.1:6379>
Hash类型:类似java的map
List类型
Set集合类型 String类型的无序集合,通过HashTable实现
Zset类型(sorted set :有序不可重复集合,带有可重复的double类型的分数)
常见数据类型操作命令:http://redisdoc.com
Key关键字
Keys *
move name 2 将name键值对剪切到2数据库
Select 2
get name
clear 回到原来的指令状态
ttl name 查询name多久过期,-1则永不过期,-2已过期
EXPIRE name 10 设置name将10s过期
type name 查看name是什么类型
发布订阅是进程间的一种消息通信模式:发送者发送消息,订阅者接收消息,实际上很少用redis做发布订阅
不过redis的主要应用是分布式数据缓存
订阅多个(c1、c2、c3): subscribe c1、c2、c3
消息发布:publish c2 hello 向 c2发送消息hello
订阅多个,通配符*,psubscribe new*
收取消息,publish new1 messagenew1
也就是主从(master 、slave)复制,主机数据更新后根据配置和策略自动同步到备份的master/slaver机制,Master以写为主,slaver以读为主
从而能实现读写分离、容灾恢复
使用:
拷贝多个redis.conf文件
开启daemonize yes
Pid文件名字,修改端口
指定duank
Log文件名字
Dump.rdp名字
一主二仆
薪火相传
反客为主
哨兵模式
Info replication 该命令查看主从角色信息
一主二从:(中心化,主机负担重)在从机上 SLAVEOF 127.0.0.1 6380 设置127.0.0.1 6380为它的主机,主机的数据备份到从机,从机不可对数据进行更新。主机出现故障,从机的角色不变,还是从机。
主机恢复后,恢复正常。从机故障,故障期间更新的数据,在故障恢复后,故障恢复后的从机数据并没有更新备份,因此,每次从机与master主机断开后都要重新连接,即重新执行SLAVEOF 127.0.0.1 6380建立连接
薪火相传:(去中心化,减轻主机负担,但有复制延时),上一个slave是下一个slave的master,从机的角色还是slave,只不过不过会有连接的从机
反客为主: 原来的主机故障,从机中会有新主机。SLAVEOF no one(该指令使当前数据库成为主数据库) ,其余从机,与新主机建立连接。原来的主机恢复后,故障期间新主机产生的更新数据原主机不会有
哨兵模式:sentinel ,(复制延迟)可以说是自动版的反客为主 ,slave启动成功后会发送一个sync命令,master接到后会在后台进程执行完毕后将数据文件传送到slave,完成同步。全量复制(一般首次是全量复制)和增量复制(主机数据更新后从机跟着复制更新的部分),但如果是重连master,都会执行全量复制。主机出现故障后会在从机选出新主机,当主机恢复正常后就变成新主机的从机
在conf文件目录下新建sentinel.conf文件 touch sentinel.conf
配置sentinel.conf:如 sentinel monitor host6379 127.0.0.1 6379 1 (1表示自动投票选出主机)
保存文件,启动哨兵:如:redis-sentinel /redis/sentinel.conf