Redis_数据类型及实际应用

 Redis支持多种数据结构,包括字符串、哈希表、链表、集合、有序集合、位图、Hyperloglogs等。

String

set/get

1、设置key对应的值为String类型的value

2、获取key对应的值

mget             mget key1  key2

批量获取多个key的值,如果可以不存在则返回nil

incr &&incrby        

incr对key对应的值进行加加操作,并返回新的值; ( incr key

incrby加指定值 (incrby key   value

decr && decrby    decr key   decrby key指定value

decr对key对应的值进行减减操作,并返回新的值;decrby减指定值

setnx        setnx key指定value 返回0 说明已经存在,set失败 1 说明不存在,set成功

设置key对应的值为String类型的value,如果key已经存在则返回0

setex        setex key过期时间(s)  指定value  过期时间+1S后返回null  

设置key对应的值为String类型的value,并设定有效期

其他命令

1、getrange 获取key对应value的子字符串

2、mset 批量设置多个key的值,如果成功表示所有值都被设置,否则返回0表示没有任何值被设置

3、msetnx,同mset,不存在就设置,不会覆盖已有的key

4、getset 设置key的值,并返回key旧的值

5、append:给指定key的value追加字符串,并返回新字符串的长度

Hash

Hash是一个String类型的field和value之间的映射表

redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap

Hash特别适合存储对象

相对于把一个对象的每个属性存储为String类型,将整个对象存储在Hash类型中会占用更少内存。

所存储的成员较少时数据存储为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

运用场景: 如用一个对象来存储用户信息,商品信息,订单信息等等。

Hash命令

1、hset——设置key对应的HashMap中的field的value

2、hget——获取key对应的HashMap中的field的value

3、hgetall——获取key对应的HashMap中的所有field的value

4、hlen--返回key对应的HashMap中的field的数量

List

1、lpush——在key对应的list的头部添加一个元素

2、lrange——获取key对应的list的指定下标范围的元素,-1表示获取所有元素

3、lpop——从key对应的list的尾部删除一个元素,并返回该元素

4、rpush——在key对应的list的尾部添加一个元素

5、rpop——从key对应的list的尾部删除一个元素,并返回该元素

Set 排重

1、sadd——在key对应的set中添加一个元素

2、smembers——获取key对应的set的所有元素

3、spop——随机返回并删除key对应的set中的一个元素

4、suion——求给定key对应的set并集

5、sinter——求给定key对应的set交集

SortSet  排序

1、zadd ——在key对应的zset中添加一个元素

zadd 集合名称 scroces值 元素   zadd myzset 1 "one"

2、zrange——获取key对应的zset中指定范围的元素,-1表示获取所有元素

zrange myzset 0 -1               zrange myzset 0 -1 withscroces

3、zrem——删除key对应的zset中的一个元素   zrem myzset one删除元素

4、zrangebyscore——返回有序集key中,指定分数范围的元素列表,排行榜中运用

5、zrank——返回key对应的zset中指定member的排名。其中member按score值递增(从小到大); 排名以0为底,也就是说,score值最小的成员排名为0,排行榜中运用

6、zcard ——返回元素数量

set是通过hashmap存储,key对应set的元素,value是空对象 sortset是怎么存储并实现排序的呢,hashmap存储,还加了一层跳跃表 跳跃表:相当于双向链表,在其基础上添加前往比当前元素大的跳转链接

各数据类型应用场景

String :计数

hash:保存对象信息,如单点登录,保存用户信息等

list:简单的消息队列,利用lrange命令,做基于Redis分页功能

set:存放不重复值的集合,可以全局去重;利用集合的交集,并集,差集,用于计算,如共同喜好等

sorted set:多了个权重参数 Score,集合中按Score进行排列,可以做排行榜,取Top N 操作。

            也可用于延时任务。

你可能感兴趣的:(Redis_数据类型及实际应用)