Redis bgsave & setnx & zset

bgsave & save

redis的数据库备份命令, 区别是阻塞:

save会阻塞主线程, 锁定当前内存中的数据库写入磁盘, save期间redis无法处理外部命令, 直到写入完成

bgsave也会阻塞主线程, 只不过阻塞时间短一点, 它的逻辑是先把当前内存数据库复制一份(fork), 复制完了, 原来的数据库就能继续正常工作了, 而把fork出来的拷贝写入磁盘. 网上有说法, 把fork误认成进程的fork, 这是错的.

 

SETNX

redis可以借助这个命令实现锁, setnx = SET if Not eXists 即如果这个变量不存在就赋值, 已经存在不会赋值.  命令在设置成功时返回 1 , 设置失败时返回 0.

借助这个命令, 可以对某个变量加锁, 其他程序要修改这个变量要取决于setnx的返回结果(EX表示expire秒数, 防止锁忘了释放)

setnx lockid 123 EX 10

 

Sorted Set & 延时队列

普通消息队列使用 redis的list数据结构就行了

延时队列用 sorted set (又称 zset) 来实现,  sorted set 有两个值, 一个是score, 一个是member, 整个set 按照 score来排序

用sorted set来实现延时消息队列: 把消息的时间戳当作score, 消息本身作为 member, 利用 ZRANGEBYSCORE 命令只取延时以后的(比如当前时间5秒前的)消息已达成延时的效果.

参考: https://redis.readthedocs.io/en/2.4/sorted_set.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱知菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值