redis的各大数据类型
1.String 类型
1.1 赋值
语法:SET key value
1.2 取值
语法:GET key
1.3 设置/获取多个键值 multipart 多部分
语法:
mset key value[key value...]
mget key [key...]
1.4取值并且赋值(返回的是以前的值)
语法:getset key value
1.5删除
语法:Del key
1.6数值的增减
1.6.1递增数值
语法:incr key
1.6.2增加指定的整数 步进数
语法:incr key increament
1.6.3递减数值
语法:decr key
1.6.4减少指定的整数 步进数
语法:decrby key decreament
1.7向尾部追加值
语法:append key value
1.8获取字符串长度
语法:strlen key
2.Hash类型
介绍:
假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下:
保存、更新:
User对象 à json(string) à redis
如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。
2.1赋值
一次只能设置一次字段值
语法:hset key field value
一次可以设置多个字段值
语法:hmset key field value[field value ...]
当字段不存在时赋值,类似hset,区别在于如果字段存在,该命令不执行任何操作
语法:hsetnx key field value
2.2取值
一次只能取一次字段值
语法:hget key field
一次可以取多个字段值
语法:hget key field[field...]
获取所有的字段值
语法:hgetAll key
2.3删除字段
可以删除一个或者多个字段,返回值时被删除的字段个数
语法:hdel key field[field...]
2.4增加字段
给整数字段值进行递增
语法:hinsertby key field increment
2.5判断字段是否存在
语法:Hexists key field
2.6只获取字段名或者字段值
语法:
hkeys key
hvals key
2.7获取字段数量
语法:
hlen key
3.List类型
介绍:
列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。
3.1向列表两边增加元素
语法:
向列表左边增加元素 push 堆栈 push——>推
lpush key value[value...]
语法:
向列表右边增加元素
rpush key value[value...]
3.2查看列表
语法:lrange key start stop
3.3从列表两端弹出元素
语法:
lpop key
rpop key
3.4获取列表中元素的个数
语法:
llen key
3.5删除列表中指定的值
语法:
LREM命令会删除列表中前count个值为value的元素,返回实际删除的元素个数
lrem key count value
3.6获取/设置指定索引的元素值
语法: 获取指定索引的元素值 lindex key index
语法: 设置指定索引的元素值 lset key index value
3.7只保留列表指定片段
语法: 指定范围和lrange一致 ltrim key start stop
3.8向列表中插入元素
语法: 该命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面。 linsert key Before/After point value
3.9将元素从一个列表转移到另一个列表中
语法: rpoplpush source destination
4Set类型
介绍: 集合中的数据是不重复且没有顺序
4.1增加/删除元素
语法: SADD key member[member...]
语法: STREM key member[member...]
4.2获取集合中的所有元素
语法: smembers key
4.3判断元素是否在集合中
语法: sismember key member
4.4集合的差集运算
语法: 属于A并且不属于B的元素构成的集合。 sdif key value
4.5集合的交集运算
语法: 属于A且属于B的元素构成的集合 sinter key[key...]
4.6集合的并集运算
语法: 属于A或者属于B的元素构成的集合 sunion key[key...]
4.7获得集合中元素的个数
语法: scard key
4.8从集合中弹出一个元素
语法: spop key
5 SortedSet类型zset
介绍: 在集合类型的基础上,有序集合类型为集合中的每个元素都关联一个分数,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。 在某些方面有序集合和列表类型有些相似。 1、二者都是有序的。 2、二者都可以获得某一范围的元素。 但是,二者有着很大区别: 1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。 2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。 3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现) 4、有序集合要比列表类型更耗内存。
5.1增加元素
语法:
向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
zadd key score member[score member...]
5.2获取元素的分数
语法: zscore key member
5.3删除元素
语法: 移除有序集key中的一个或多个成员,不存在的成员将被忽略。 当key存在但不是有序集类型时,返回一个错误。 zrem key member[member...]
5.4获取排名在某个范围的元素列表
语法: 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素) ZRANGE key start stop [WITHSCORES]
语法: 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素) ZREVRANGE key start stop [WITHSOCRES]
5.5获取指定分数范围的元素
语法: ZRANGEBYSCORE KEY MIN MAX[WITHSCORES][LIMIT offset count]
5.6 增加某个元素的分数
语法: 返回值是更改后的分数 zincrby key increment member
5.7获取集合中元素的数量
语法: zcard key
5.8获取指定分数范围内的元素个数
语法: zcount key min max
5.9按照排名范围删除个数
语法: zremrangebyrank key start stop
5.9.1按照分数范围删除元素
语法: zremrangebyscore key min max
5.9.2获取元素的排名
语法: 从小到大 zrank key member
语法: 从大到小 zrevrank key member