Redis笔记

Redis的基本数据结构

字符串

一个key对应一个字符串value。

redis字符串

redis可以同时操作多个String类型:mset key1 value1 key2 value2 ...,效率略高于一个一个操作数据。

如果value中存放的是数字的话,还可以进行加减。

incr key:对key的value执行+1操作。
incrby key increment:对key的value执行加一个整数操作。
incrbyfloat key increment:对key的value执行加一个浮点数操作。

相对的还有decr keydecr key increment用于减少。

redis还可以对字符串加上时效的限制。

setex key seconds value用来给字符串加上秒级的时间限制。如果为一个字符串变量设置了时效之后,再使用set操作这一个变量的话,时效设置将会失效。

Hash表

一个key里面装很多的field-value对。

同样地,hash表也可以同时操作一个key中的多个value。

获取hash表中字段的数量用hlen key,判断hash表中是否含有指定字段用hexists key field

获取hash表所有的field用hkeys key,获取hash表中所有的value用hvals key

redis哈希表

列表

列表是讲顺序的,底层是双向链表,可以在头部尾部和头部添加元素和弹出数据,还可以遍历。

redis列表

带阻塞版本的弹出:blpop key [timeout]brpop key [timeout],可以在规定时间内弹出元素,有数据弹出就弹出,没有就一直等到时间timeout结束。这个功能可以用来实现消息队列,有任务就弹出来做,没有就一直阻塞等待。

集合

字符串的无序集合。集合中不允许数据重复,如果添加的数据在集合中已经存在,只保留一份。

redis集合

随机获取set中指定数量的数据用srandmember key [count],相当于读几个数据。

随机弹出set中指定数量的数据用spop key,不仅读取,而且弹出。

集合有交、并、补的操作,分别是sintersunionsdiff

将两个集合的交、并、补的结果存放在指定的集合中,用sinterstoresunionstoresdiffstore

将指定的数据从目标集合移动到指定集合中,使用smove

有序集合

为每个字符串元素绑定一个分数,按照分数大小排序。

redis有序集合

按score范围查询数据用zrangebyscore key min max,按score范围删除数据用zremrangebyscore key min max,按索引值删除数据用zremrangebyrank key start stop

获取数据的索引值:zrank key member
获取数据的分数值:zscore key member
修改数据的分数值:zincrby key increment menber

注意:redis中的字符串是二进制安全的,所以可以包含任何数据,比如jpg图片或者序列化的对象。

注意2:redis没有mysql中schema或database的概念,它是一个字典结构的存储服务器,实际上redis提供了很多个字典来供存储数据(默认16个,可通过配置文件修改个数)。客户端与Redis建立连接后会自动选择0号字典,不过可以随时使用SELECT命令更换字典,假如要选择1号字典只需要输入select 1即可。这种不同的“字典”更像是一种命名空间,不同字典间的数据并不是完全隔离的,可以进行交互。用户要么有所有字典的访问权限,要么全都没有。

# redis 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×