Redis的数据类型

文章介绍了Redis中的五大数据结构——String、List、Set、SortedSet和Hash,包括各自的操作命令和典型应用场景,如缓存、消息队列和分布式锁的实现。另外提到了HyperLogLog、GEO和BIT等其他数据结构。
摘要由CSDN通过智能技术生成

常用的5种数据结构:

1)key-string(字符串  String ):一个key对应一个值(最常用的,一般用于存储一个值 )

2)key-list(列表  List ):一个key对应一个列表。(使用list结构实现栈和队列结构 )

3)key-set(集合  Set ):一个key对应一个集合。(交集,差集和并集的操作 )

4)key-zset(有序集合   sorted set ):一个key对应一个有序的集合。(排行榜,积分存储等操作 )

5)key-hash(哈希  Hash ):一个key对应一个Map。(存储一个对象数据的 )

另外三种数据结构:

1)HyperLogLog:计算近似值的。

2)GEO:地理位置。

3)BIT:一般存储的也是一个字符串,存储的是一个byte[]。

 1、字符串(String)

1)set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回"OK"

2)get key:获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value,如果该key不存在,返回null

3)setex key seconds value:设置key以及对应的value,还可以设置过期时间

4)setnx key value:当key不存在时,设置对应的value,当key存在时,不做任何操作

5)incr key:将指定的key的value原子性的递增1.如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。

6)decr key:将指定的key的value原子性的递减1.如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。

7)incrby key increment:将指定的key的value原子性增加increment,如果该key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成整型,如hello则失败并返回错误信息。

8)decrby key decrement:将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能转成整型,如hello则失败并返回错误信息。

使用场景如下:

1.简单的缓存存储(最常用)

2.消息的失效性(过期时间的设置)

3.分布式锁的实现(redisson)

2、列表(List)

1)lpush key value1 value2...:在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。

2)rpush key value1 value2…:在该list的尾部添加元素。

3)lrange key start end:获取链表中从start到end的元素的值,start、end可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推….

4)lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。

5)rpop key:从尾部弹出元素。

 

6)llen key:返回指定的key关联的链表中的元素的数量。

使用场景如下:

消息流的场景:

1.用户的id作为key,发送的消息作为value,例如:朋友圈发布,微博发布,公众号发布...

3、集合(Set,不允许出现重复的元素)

1)sadd key value1 value2…:向set中添加数据,如果该key的值已有则不会重复添加。

2)smembers key:获取set中所有的成员。

3)scard key:获取set中成员的数量。

4)sismember key member:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在。

5)srem key member1 member2… :删除set中指定的成员。

6)srandmember key:随机返回set中的一个成员。

 

7)spop key:随机返回set中的一个成员并从set中移除。

8)sdiff key1 key2:返回key1与key2中相差的成员,而且与key的顺序有关,即返回差集。

 

9)sdiffstore destination key1 key2:将key1、key2相差的成员存储在destination上。

10)sinter key[key1,key2…]:返回交集。

11)sinterstore destination key1 key2:将返回的交集存储在destination上。

12)sunion key1 key2:返回并集。

13)sunionstore destination key1 key2:将返回的并集存储在destination上

 

使用场景如下:

公司年会,随机抽奖小程序

1.把所有用户统一存入set集合中

2.查看所有抽奖人数

3.随机抽取指定得奖人数并从set集合中删除

实现:

1.sadd choujiang userid1,userid2,userid3...

2.smembers choujiang

3.spop choujiang [count]

微信点赞,微博收藏

1.点赞,创建集合并加入对应用户

2.取消点赞,从集合中删除对应用户

3.检查用户是否点过赞

4.获取点赞用户列表

5.获取点赞用户数量

实现:

1.sadd dianzan userid1,userid2,userid3...

2.srem dianzan userid1

3.sismember dianzan userid1

4.smembers dianzan

5.scard dianzan

查看共同好友,推荐可能认识的人

1.两个集合取交集

实现:

1.sinter user1list,user2list...

2.sinterstore list user1list,user2list...

4、有序集合(sorted set)

1)zadd key score member score2 member2 … :将所有成员以及该成员的分数存放到sorted-set中。

 

2)zcard key:获取集合中的成员数量。

3)zcount key min max:获取分数在[min,max]之间的成员。

4)zincrby key increment member:设置指定成员的增加的分数。

zincrby zset1 10 jack

5)zrangebyscore key min max [withscores] [limit offset count]:返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[limit offset count]:offset,表明从脚标为offset的元素开始并返回count个成员。

6)zrevrangebyscore key min max [withscores] [limit offset count]:上面类似(score需从大到小),从高到底排序

使用场景如下:

排行榜实现

1.对播放的视频,分数自增1

2.展示排行榜前十的视频

实现:

1.zincrby videos 1 video1id

2.zrevrangebyscore videos 100 0 withscores limit 0 10 (zrevrangebyscore从大到小排序)

5、哈希(Hash)

1)hset key field value:为指定的key设定field/value对(键值对)。

例如:hset user name zhangsan

2)hget key field:返回指定的key中的field的值。

3)hgetall key:获取key中的所有filed-vaule。

4)hlen key:获取key所包含的field的数量。

5)hincrby key field increment:设置key中filed的值增加increment

6)hdel key field [field ...]:删除key中的属性

使用场景如下:

购物车场景:

1.用户的id作为key

2.商品的id作为field(属性)

3.商品的数量作为value(属性值)

购物车操作:

1.用户添加购物车:hset cart:1001 20001 1 (id为1001的用户添加了一个id为20001的商品,数量为1个)

2.增加对应商品数量:hincrby cart:1001 20001 1

3.查询商品总数:hlen cart:1001

4.删除该用户的某个商品:hdel cart:1001 20001

5.查询该用户购物车信息:hgetall cart:1001

6、通用操作

1)keys patten:获取所有与patten匹配的key,*表示任意字符,?表示一个字符。

2)del key1 key2....:删除指定的key。

3)exists key:判断该key是否存在,1表示存在,0表示不存在。

4)expire key second:为当前key设置过期时间(单位:秒)。

5)ttl key:查看当前key剩余过期时间。

6)flushall: 删除所有key(慎用)

7)flushdb: 删除所有key(慎用)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值