【Chapter-3】Redis数据特性
位图(BitMap):在某些情况下,使用位图带图字符串以节省内存空间
过期时间(expiration):临时数据可以设置过期时间,以及键过期时发生的动作
排序(sorting):redis支持对redis列表list、集合set、有序集合zset中的值进行排序并输出排序后的结果
管道(pipeline):redis管道的使用,管道可以优化多个redis操作性能
事物(transaction):redis支持类似关系数据库的事物
发布订阅(pubsub):消息交换管道,消息队列
编写调试lua脚本:实现程序的可配置性和可扩展性,lua脚本可以将多个操作打包在一起并原子性执行
1. 使用位图(BitMap)
位图存储的是布尔信息,较字符串可以节省内存空间
位图是由比特位(bit)组成的数组,bit是用0/1标记的,所以位图只能存储布尔类型的信息0/1.实际上是设置指定数组索引(偏移量)的bit值0/1
案例:用户(ID)是否使用过某个功能(例如点赞)
总结:数据量大可以使用位图,数据量小使用集合
设置键的过期时间
我们可以通过以下三种方式清楚一个键的过期时间:
使用persist命令使其成为持久的键
键的值被替换或删除。包括set、getset和score命令会清楚过期时间。不过,修改列表,集合和哈希的元素不会清楚过期时间
被重命名为一个没有过期事假的key
如果键存在没有设置过期时间ttl返回-1;如果键不存在,返回-2;
使用sort命令
redis列表或者集合中的元素是无序的,有序集合中的元素是根据权重排序的,我们可以以某种非权重顺序对列表、集合、有序集合中的元素进行排序。
语法:
使用管道(pipeline)
客户端将多个命令打包,并将他们一次性发送,而不再等待每个单独命令的执行结果,同时,redis管道需要服务器在执行所有的命令后再返回结果。
理解redis事物(transaction)
multi:开启事物
exec:执行事物
discard:废弃事物
redis事物和关系性数据库事物之间的区别:redis事物没有事物回滚
如果是语法错误,整个事物快速失败,所有命令不会被处理执行
如果是在执行过程中发生错误,发生错误之后的命令仍然会执行,不会发生回滚
Last updated
Was this helpful?