Redis总结笔记(总结自Redis开发与运维)

1、可以通过object encoding命令查询内部编码

内部编码:

string:raw int embstr(小于39)

Hash:hashtable ziplist

List:linked list  ziplist

Set :hashtable intset

Zset skiplist ziplist

这样设计的有点:改进内部编码,对外的数据结构和命令没有影响;多种内部编码实现可以在不同的场景下发挥各自的优势。

Redis的单线程模型:使用了单线程架构和IO多路复用模型来实现高性能的内存数据库服务。

单线程性能高的原因:

  1. 纯内存访问,数据放在内存中,访问快;
  2. 非阻塞IO,使用epoll作为IO多路复用技术的实现,加上自身的事件处理模型将epoll中的链接 读写 关闭都转换为事件,不在网络上浪费过多的时间。
  3. 单线程避免了现成切换和竟态产生的消耗。

单线程模型不会同时有两个命令同时执行,没有并发问题。但是若是一个命令执行时间过长,会造成其他命令的阻塞。因为redis是面向快速执行场景的数据库。

String:

命令 set setnx setex:

SET key value含义:

          将字符串值 value 关联到 key . 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。

SETEX key seconds value

           将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。

返回值:

           设置成功时返回 OK 。当 seconds 参数不合法时,返回一个错误。

SETNX key value 含义:  setxx,与nx相反,键必须存在才能设置成功,用户更新。

           将 key 的值设为 value ,当且仅当 key 不存在。 若给定的 key 已经存在,则 SETNX 不做任何动作。

           SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。 设置成功,返回 1 .  设置失败,返回 0 。

GETSET key value  含义:

          将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

          当 key 存在但不是字符串类型时,返回一个错误。

           返回给定 key 的旧值.  当 key 没有旧值时,也即是, key 不存在时,返回 nil 。

因为 SET 命令可以通过参数来实现和 SETNX 、 SETEX 和 PSETEX 三个命令的效果,所以将来的 Redis 版本可能会废弃并最终移除 SETNX 、 SETEX 和 PSETEX 这三个命令。

SET key-with-expire-time "hello" EX 10086  ,为key设置过期时间。

SET key-with-expire-and-NX "hello" EX 10086 NX 若是key不存在 则设置,并设置过期时间。

 

Setnx的应用场景,若是多个客户端同时执行setnx key value,只能有一个客户端设置成功,setnx可以作为分布式锁的一种实现方案。

批量获取命令:mset:提高开发效率,减少网络消耗

计数:
incr key.自增;decr decr 自减,incrby 自增指定数字 decrby 自减指定数字 incrbyfloat 自增浮点数

String使用场景:缓存 ,计数 ,共享session ,限速(限制发短信次数,)

Hash

Hget hset hgetall  存储结构信息。

List:列表原始有序(可通过下标获取),可重复

查询:lindex key index:获取列表指定索引下标的元素。

Lrem key count value :删除指定元素,从列表中找到等于value的元素进行删除,

Ltrim key start end :按照索引范围修建列表 ,保留list的start end之间的元素。

阻塞操作命令:blpop brpop, blpop key timeout;timeout 阻塞时间。

列表为空:timeout=3 ,客户端等3s后返回,timeout=0则一直阻塞。列表不为空 则会立即返回。

list使用场景:
消息队列:lpush +brpop 可实现阻塞队列,

文章列表:分页展示每个人的文章列表。若是列表较大,获取中间数据比较慢,可以考虑将列表做二级拆分。<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值