6.redis的高级特性
1.查找键,模糊查询
以 s 开头的key
keys s*
2.判断key是否存在
返回1表示存在
exists yyy
3.设置过期时间
expire name 60 ttl name
(integer) 42 //返回时间,如果已经过期 ,则返回-2;如果数据永久不过期,则返回-1;如果正在过期,即返回剩余时间
persist name //取消过期时间
4.选择数据库
select 2 //选择第三个逻辑库
keys * //可以看到里面任何数据没有
数据库下标变了
根据业务分库
5.数据库移动
选择第三号数据库 ,创建set name ,将数据移动到1号数据库
select 2 set name caolihua move name 0
6.随机
随机 randomkey 返回该库的 一个key,抽奖应用可以用到(所有ip)
7.基本小命令
echo 打印
dbsize 查看数据库key 数量
info :数据库信息
config get * :返回所有配置 ,上下行挨着的key ,value
flushdb :清空当前数据库
flushall :清空所有数据库
8.安全特性
设置密码
vim redis.conf
requirepass caolihua //密码设置为caolihua
1)需要授权
2)或者从登陆上输入密码
./redis-cli -h 192.168.50.160 -p 6379 -a caolihua
8.redis 事务
并非严格的事务,先不要用事务。
1) multi 开启事务 ,exec 提交事务
192.168.50.160:6379> set p1 111 OK 192.168.50.160:6379> set p2 222 OK 192.168.50.160:6379> set p3 333 OK 192.168.50.160:6379> keys * 1) "p3" 2) "p2" 3) "p1" 192.168.50.160:6379> multi OK 192.168.50.160:6379> set p4 444 QUEUED 192.168.50.160:6379> set p5 555 QUEUED 192.168.50.160:6379> exec 1) OK 2) OK 192.168.50.160:6379> keys * 1) "p3" 2) "p5" 3) "p2" 4) "p4" 5) "p1"
2)取消事务
192.168.50.160:6379> multi OK 192.168.50.160:6379> set p6 xxx QUEUED 192.168.50.160:6379> set p7 xxx QUEUED 192.168.50.160:6379> discard OK 192.168.50.160:6379> keys * 1) "p3" 2) "p5" 3) "p2" 4) "p4" 5) "p1"
3)报错,事务未生效
name 无法自增,报错;age 可以自增,未回滚。
192.168.50.160:6379> set name caolihua OK 192.168.50.160:6379> set age 18 OK 192.168.50.160:6379> multi OK 192.168.50.160:6379> incr name QUEUED 192.168.50.160:6379> incr age QUEUED 192.168.50.160:6379> exec 1) (error) ERR value is not an integer or out of range 2) (integer) 19
8.持久化特性
1)快照rdb方式,
save 300 10 // 300秒内,10个key 发生变化,则发起快照保存到磁盘;当到第9个时,断电,即丢失数据
2)aof 方式
设置redis.conf 配置文件
appendonly yes appendfilename "appendonly.aof" appendfsync always // 每一次数据操作,都记录一条日志到磁盘;采用这个
#appendfsync everysec //每秒将所有日志操作 记录到磁盘
# appendfsync no
dir /home/caolh/redis-3.2.11/datas //rdb文件和aof 文件都会放到这个目录下
keys * 查看 :所有数据都空了,即重启后rdb文件的数据不会自动写入redis缓存
info //aof 生效
9.发布、订阅模式 (取代zookeeper)
开启3个客户端,都是一个机器,为了测试
1)开启订阅
192.168.50.160:6379> subscribe c1 c2 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "c1" 3) (integer) 1 1) "subscribe" 2) "c2" 3) (integer) 2
2)发消息
192.168.50.160:6379> publish c1 hello (integer) 1 192.168.50.160:6379>
192.168.50.160:6379> publish c2 world (integer) 1 192.168.50.160:6379>
3)收到消息
192.168.50.160:6379> subscribe c1 c2 Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "c1" 3) (integer) 1 1) "subscribe" 2) "c2" 3) (integer) 2 2) "c2" 3) "world" 1) "message" 2) "c1" 3) "hello"
少量数据可以,海量数据 ,无法取代消息队列 ,积压堆积 处理慢。
可以用来 取代zk 的机器的配置文件同步监听的功能。
这个发布、订阅不要乱用。