#Redis开发与运维#api的理解和使用:

预备:

全局命令,进行键操作;

object encoding查看内部编码;

单线程架构(内存访问,非阻塞io,避免线程切换和竞态产生的消耗,可简化数据结构和算法的实现,面向快速执行场景);

字符串string:

操作命令:设置值,获取值,批量设置值,批量获取值;计数;

内部编码:int,embstr,raw;最大值不能超过512mb;

使用场景:mysql+redis缓存;计数;共享session,通过redis集中管理session,解决分布式web服务session问题;限速,获取验证码;

哈希hash(字典,关联数组):

使用场景:缓存用户信息;不适合做复杂的关系查询;

内部编码:ziplist,hashtable会消耗更多内存;

列表list(有序的字符串,可通过索引获取值):

操作命令:push,插入,查找,pop删除;修改;阻塞式操作blpop,brpop;

内部编码:ziplist,linkedlist;

使用场景:消息队列;文章列表;时间轴;

lpush+lpop=stack 栈;

lpush+rpop=queue 队列;

lpush+ltrim=capped collection 有限集合;

lpush+brpop=message queue 消息队列;

集合set(元素不重复,无序元素,不支持索引,支持交集,并集,差集):

内部编码:intset,hashtable;

使用场景:tag;

有序集合zset:

使用场景:排行榜系统;

键管理:

单个键管理:重命名,随机返回键,键过期,迁移键;

遍历键:全量遍历键,渐进式遍历;

数据库管理:切换数据库;

重点回顾:p73;