Redis常用数据类型

1、String

    1.1、string    

        String类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,它在Redis中是二进制安全的,这便意味着该类型可以包含任何格式的数据,如JPEG图像数据或Json对象描述信息等。Value最多可以容纳的数据长度为512MB。

        应用场景:很常见的场景用于统计网站访问数量,当前在线人数等。incr命令(++操作)

    1.2、常用命令

set key value                          设置key=value
get key                                获得键key对应的值
setnx(not exist)  key value            如果key的value存在就不会被修改并且返回0
setex (expire) key seconds valeu       指定键的过期时间
setrange                               替换字符串
mset key value [key value...]          设置多个键和多个值
mget key1 [key2..]                     得到多个的给定键的值
strlen key                             得到存储在键的值的长度
getset key value                       设置键的字符串值,并返回旧值
incr key                               增加键的整数值一次
decr key                               递减键一次的整数值
incrby key [步长]                      对某个值进行指定步长的递增
decrby key [步长]                      对某个值进行指定步长的递增
append key value                       追加值到一个键
del key                                如果存在删除键
exists key                             检查该键是否存在
expire key seconds                     指定键的过期时间
persist key                            移除过期的键
rename key newkey                      更改键的名称
typekey                                返回存储在键的数据类型的值

2、Hash

    2.1、Hash 

        Redis Hash是一个string类型的fieldvalue的映射表,或者说是一个String集合,Hash特别适合用于存储对象。相比较而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。

        应用场景:例如存储、读取、修改用户属性(nameagepwd等)

    2.2、常用命令

hset 给key集合中fileld属性设值                用法:hset key field value
hget获取key集合中fileld属性的值               用法:hget key field  
hmset 一次赋值多个字段                        用法:hmset key field1 value1 [field2 values]
hmget 一次取多个字段的值                      用法:hmget key field1 [field2]
hexists 判断字段是否存在                      用法:hexists key field
hsetnx 当字段不存在时赋值                     用法:hsetnx key field value
hincrby 增加数字,仅对数字类型的值有用         用法:hincrby key field increment
hdel 删除字段                                用法:hdel key field
hkeys 获取所有字段名                          用法:hkeys key
hvals 获取所有字段值                          用法:hvals key
hlen 获取字段数量                             用法:hlen key
hgetall 一次取所有字段的值                    用法:hgetall key

3、List

    3.1、List

        redis的List类型是一个链表结构的集合。其主要功能是push和pop获取元素等,更详细的说,List类型是一个双端链表的结构,我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。

        应用场景:1.最新消息排行榜。2.消息队列,以完成多程序之间的消息交换。可以用push操作将任务存在list中(生产者),然后线程再用pop操作将任务取出进行执行。(消费者)

    3.2、常用命令

           1、 lpush向列表左端添加元素(类似于栈),用法:lpush key value

                

          2、rpush 向列表右端添加元素(类似于队列),用法:rpush key value

                

          3、lrange 获取列表中某一片段的元素(index从0开始,-1表示最后一个元素),用法:lrange key start stop

lpop 从列表左端弹出元素,并返回弹出元素的值      用法:lpop key
rpop 从列表右端弹出元素,并返回弹出元素的值      用法:rpop key
llen 获取列表中元素个数,                      用法:llen key
lrem 删除列表中指定的值,                      用法:lrem key count value,删除列表中前count个值为value的元素,当count>0时从左边开始数,count<0时从右边开始数,count=0时会删除所有值为value的元素
lindex 获取指定索引的元素值,                  用法:lindex key index
lset 设置指定索引的元素值,                    用法:lset key index value
ltrim 只保留列表指定片段,                     用法:ltrim key start stop,包含start和stop
linsert 像列表中插入元素,                     用法:linsert key before|after privot value,从左边开始寻找值为privot的第一个元素,然后根据第二个参数是before还是after决定在该元素的前面还是后面插入value
rpoplpush 将元素从一个列表转义到另一个列表,    用法:rpoplpush source destination

4、Set

    4.1、Set

        Redis SetString类型的无序不可重复的集合。集合最大的优势在于可以进行交集并集差集操作。
        应用场景:1.利用交集求共同好友。2.利用唯一性,可以统计访问网站的所有独立IP3.好友推荐的时候根据tag求交集,大于某个threshold(临界值的)就可以推荐。

    4.2、常用命令

sadd 添加元素,                            用法:sadd key value1 [value2 value3 ...]
srem 删除元素,                            用法:srem key value2 [value2 value3 ...]
smembers 获得集合中所有元素,               用法:smembers key
sismember 判断元素是否在集合中,            用法:sismember key value
sdiff 对集合做差集运算,                    用法:sdiff key1 key2 [key3 ...],先计算key1和key2的差集,然后再用结果与key3做差集
sinter 对集合做交集运算,                   用法:sinter key1 key2 [key3 ...]
sunion 对集合做并集运算,                   用法:sunion key1 key2 [key3 ...]
scard 获得集合中元素的个数,                用法:scard key
sdiffstore 对集合做差集并将结果存储,       用法:sdiffstore destination key1 key2 [key3 ...]
sinterstore 对集合做交集运算并将结果存储,   用法:sinterstore destination key1 key2 [key3 ...]
sunionstore 对集合做并集运算并将结果存储,   用法:sunionstore destination key1 key2 [key3 ...]
srandmember 随机获取集合中的元素,          用法:srandmember key [count],当count>0时,会随机中集合中获取count个不重复的元素,当count<0时,随机中集合中获取|count|和可能重复的元素。
spop 从集合中随机弹出一个元素,             用法:spop key
        1、sadd 添加元素,用法: saddkey value1 [value2 value3 ...]
              
        2、sdiff  对集合做差集运算,用法: sdiff key1 key2  

            

        3、sinter 对集合做交集运算,用法:sinter key1 key2 

            

        4、sunion 对集合做并集运算,用法:sunion key1 key2

            

5、ZSet

    5.1、ZSet      

        和set很像,都是字符串的集合,都不允许重复的成员出现在一个set中。他们之间差别在于ZSet集合中每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。尽管有序集合中的成员必须是唯一的,但是分数(score)却可以重复。

        应用场景:可以用于一个大型在线游戏的积分排行榜,每当玩家的分数发生变化时,可以执行zadd更新玩家分数(score),此后在通过zrange获取几分top ten的用户信息。

    5.2、常用命令

zadd 添加元素,                             用法:zadd key score1 value1 [score2 value2 score3 value3 ...]
zscore 获取元素的分数,                     用法:zscore key value
zrange 获取排名在某个范围的元素,            用法:zrange key start stop [withscore],按照元素从小到大的顺序排序,从0开始编号,包含start和stop对应的元素,withscore选项表示是否返回元素分数
zrevrange 获取排名在某个范围的元素,         用法:zrevrange key start stop [withscore],和上一个命令用法一样,只是这个倒序排序的。
zrangebyscore 获取指定分数范围内的元素,     用法:zrangebyscore key min max,包含min和max,(min表示不包含min),(max表示不包含max),(+inf表示无穷大)
zincrby 增加某个元素的分数,                 用法:zincrby key increment value
zcard 获取集合中元素的个数,                 用法:zcard key
zcount 获取指定分数范围内的元素个数,         用法:zcount key min max,min和max的用法和zrangebyscore中的一样
zrem 删除一个或多个元素,                    用法:zrem key value1 [value2 ...]
zremrangebyrank 按照排名范围删除元素,       用法:zremrangebyrank key start stop
zremrangebyscore 按照分数范围删除元素,      用法:zremrangebyscore key min max,min和max的用法和zrangebyscore中的一样
zrank 获取正序排序的元素的排名,              用法:zrank key value
zrevrank 获取逆序排序的元素的排名,           用法:zrevrank key value
zinterstore 计算ZSet的交集并存储结果,        用法:zinterstore destination numbers key1 key2 [key3 key4 ...] weights weight1 weight2 [weight3 weight4 ...] aggregate sum | min | max,numbers表示参加运算的集合个数,weight表示权重,aggregate表示结果取值
zunionstore 计算有序几个的并集并存储结果,     用法和zinterstore一样
            

猜你喜欢

转载自blog.csdn.net/strong997/article/details/80090529