redis使用(三):事务,过期时间,排序,订阅/发布,持久化

一.事务
MULTI
COMMAND1
COMMAND2

COMMANDn
EXEC 或者 DISCARD (取消)

127.0.0.1:6379> multi
OK
127.0.0.1:6379> lpush ring left
QUEUED
127.0.0.1:6379> zadd student 88 park
QUEUED
127.0.0.1:6379> exec
1) (integer) 2
2) (integer) 1

redis中事务是一组命令集合,EXEC时会执行这组命令,这组命令执行过程中不会执行其它命令,

1)语法错误, 如:命令不存在,命令参数个数不对
如果有语法错误,这组命令中的所有命令都不会执行;

2)运行错误,命令执行时出现的错误,如果对hash类型的key执行lpush命令;

watch命令,监视一个变量,直到下一个exec,discard,unwatch命令,如果exec执行时监视的键值有变化,则事务不会执行, watch命令可以用来对键值加锁(乐观锁)。

二 .键值的过期时间

 #expire key time(s)  设置键的过期时间,time秒后会删除键
 #ttl key 查看键多长时间后过期,
 #persist key  设置键为永久
127.0.0.1:6379> expire ring 300  
(integer) 1
127.0.0.1:6379> ttl ring
(integer) 161
127.0.0.1:6379> ttl ring
(integer) 145
127.0.0.1:6379> persist ring
(integer) 1
127.0.0.1:6379> ttl ring
(integer) -1

三 .排序

#sort 可以对listset,sorted set, (不支持hash类型)排序,默认转换成浮点数排序,加ALPHA则按字母序排序
127.0.0.1:6379> lrange  letters 0 -1
1) "c"
2) "A"
3) "D"
4) "B"
5) "m"
6) "k"
7) "N"
127.0.0.1:6379> sort letters ALPHA
1) "A"
2) "B"
3) "c"
4) "D"
5) "k"
6) "m"
7) "N"

更多,可以结合BY GET STORE使用

四 .订阅/发布

#publish channelname message 在channelname发布一个消息,此时订阅此channel的客户端会收到消息
#subscribe channelname 订阅channelname的消息
127.0.0.1:6379> subscribe tv1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1
1) "message"

#psubscribe globmatch  使用glob通配符订阅
#punsubscribe globmatch  需要与psubscribe成对出现才有用

疑问:订阅状态下,unsubscribe命令不起作用,为什么???

127.0.0.1:6379> subscribe tv1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1
1) "message"
2) "tv1"
3) "world"
unsubscribe tv1

五.持久化
Redis支持持久化存储数据,即保存数据到硬盘。支持两种方式持久化,RDB方式和AOF方式;

1)RDB方式

RDB,即快照,把内存中的数据生成一份副本保存在硬盘上;如下几种情况会执行快照:
1)根据配置规则,如save 100 10 ,表示如果100s内,有10个键值被修改,就执行快照;
2)用户执行save或者bgsave命令,save命令执行期间不会相应客户端的请求,而bgsave可以立即返回,bgsave通过fork出一个子进程来执行快照,主进程继续接收客户端命令;
3)执行flushall(清空所有数据)命令,如果配置了1)中的快照条件,执行flushall时会触发执行快照;
4)主从复制时,从节点向主节点发sync命令后,主节点会执行快照,并开始缓存此后执行的命令,然后把快照和缓存的命令传输给从节点,从而实现从数据库的复制初始化。

RDB的缺点:redis一旦异常退出,只能恢复到最后一次执行快照时的数据。

2)AOF方式
AOF方式,通过将执行的没条命令写入磁盘来实现持久化,这个过程会降低Redis的性能,AOF文件的存放位置都是dir配置的路径,默认没有开启AOF方式持久化,可以通过配置appendonly yes启用。

参考:
Redis实战《红丸出品》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值