#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;