Redis五大数据类型
文章目录
- Redis五大数据类型
- key
- 字符串string操作命令
- 列表list
- 集合set
- 哈希hash
- 有序集合zset (sorted set)
key
keys *
查看当前库的所有键exists <key>
判断某个键是否存在type <key>
查看键的类型del <key>
删除某个键expire <key> <seconds>
为键值设置过期时间,单位秒ttl <key
> 查看还有多久过期,-1表示永不过期,-2表示已过期dbsize
查看当前数据库中key的数量flushdb
清空当前库Flushall
通杀全部库
字符串string操作命令
String类型,也就是字符串类型,是Redis中最简单的存储类型
其value是字符串,不过根据字符串的格式不同,又可以分为3类:
- string:普通字符串
- int:整数类型,可以做自增、自减的操作
- float:浮点类型,可以做自增、自减操作
具体操作:
set <key> <value>
设置指定的值get <key>
获取指定的值append <key> <value>
将给定的追加到原值的末尾strlen <key>
获取值的长度setnx <key> <value>
只有在key不存在时设置key的值incr <key>
将key中存储的数字值增1
只能对数字值操作,如果为空,新增值为1decr <key>
将key中存储的数字值减1
只能对数字之操作,如果为空,新增值为-1incrby /decrby <key> 步长
将key中存储的数字值增减,自定义步长mset <key1> <value1> <key2> <value2>
同时设置一个或多个key-value对(一个key-value设置失败,都失败)mget <key1> <key2> <key3>
同时获取一个或多个valuemsetnx <key1> <value1> <key2> <value2>
同时设置一个或多个key-value对,当且仅当所有给定的key都不存在getrange <key> <起始位置> <结束位置>
获得值的范围(两边都是闭区间)setrange <key> <起始位置> <value>
用覆盖所存储的字符串值,从<起始位置>开始setex <key> <过期时间> <value>
设置键值的同时,设置过期时间,单位秒getset <key> <value>
以新换旧,设置了新值的同时获取旧值
更多请查看手册Redis 字符串(String)_redis教程
列表list
1)单键多值
2)Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
3)它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
具体操作:
lpush/rpush <key> <value1> <value2>
从左边/右边插入一个或多个值lpop/rpop <key>
从左边/右边吐出一个值。若吐完了,则key自动删除rpoplpush <key1> <key2>
从列表右边吐出一个值,插到列表左边(只有右出左进)lrange <key> <start> <stop>
按照索引下标获得元素(从左到右)
获得全部元素:lrange <key> 0 -1
llen <key>
获得列表长度linsert <key> before <value> <newvalue>
在value的前面插入newvaluelrem <key> <n> <value>
从左边删除n个value(从左到右)
集合set
1)Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的
2)Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。
sadd <key> <value1> <value2> ....
将一个或多个 member 元素加入到集合key 当中,已经存在于集合的 member 元素将被忽略。smembers <key>
取出该集合的所有值。sismember <key> <value>
判断集合是否为含有该值,有返回true,没有返回falsescard <key>
返回该集合的元素个数srem <key> <value1> <value2> ....
删除集合中的某个元素value1,value2。spop <key>
随机从该集合中吐出一个值srandmember <key> <n>
随机从该集合中取出n个值。(会从集合中删除,并且集合元素为空,集合自动删除)
不会从集合中删除sinter <key1> <key2>
返回两个集合的交集元素sunion <key1> <key2>
返回两个集合的并集元素sdiff <key1> <key2>
返回两个集合的差集元素
哈希hash
hset <key> <field> <value>
给key集合中的 field键赋值valuehget <key1> <field>
从key1集合field取出 valuehmset <key1> <field1> <value1> <field2> <value2>...
批量设置hash的值hgetal <key>l
获取所有的filed-valuehexists key <field>
查看哈希表 key 中,给定域 field 是否存在。hkeys <key>
列出该hash集合的所有fieldhvals <key>
列出该hash集合的所有valuehincrby <key> <field> <increment>
为哈希表 key 中的域 field 的值加上增量 incrementhsetnx <key> <field> <value>
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在
有序集合zset (sorted set)
zadd key score1 member[score2 member2]
向有序集合中添加一个或多个成员,或者更新已存在的成员分数(注意是分数在前,成员在后)zrange key start stop [WITHSCORES]
通过索引区间返回有序集合中指定区间的成员【0,-1】查看所有,
加上withscores后返回值会带上分数zincrny key increment member
有序集合中对指定成员的分数上加上增量incrementzrem key member [member ...]
移除有序集合中一个或多个成员zrangebyscore key min max [withscores] [limit offset count]
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。zrevrangebyscore key max min [withscores] [limit offset count]
同上,改为从大到小排列。(注意是先max 后min)zrank key member:
获取sorted set中元素的排名,默认都是升序,如果要降序则在命令的Z后面添加REV即可zcount <key> <min> <max>
统计该集合,分数区间内的元素个数