数据库进阶-Redis入门教程2-redis五大数据结构

本文详细介绍了Redis中的五大数据结构:Strings、Lists、Sets、Sorted Sets和Hashes,包括它们的操作方法和实际应用场景。例如,Strings的自增、自减操作,Lists作为消息队列和分页功能,Sets的交并差集操作,Sorted Sets的排序和分数功能,以及Hashes用于存储用户属性等。这些数据结构的高效特性和灵活运用,使得Redis在缓存、数据存储等方面表现出色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考redis入门笔记

1. redis数据类型

而关于key,有几个点要提醒大家:

1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;

【redis数据结构 – strings】

赋值

set key value

取值

get key

取值后赋值

getset key value

在这里插入图片描述
字符串追加操作

append key string

删除

del key

除了set,get之外得其他操作
自增1

#如果该key不存在,则创建该key,并赋值为00自增后为1,等同于增加 【key,1】键值对
#如果该key存在,则value自增加1
incr key

自减1

#如果该key不存在,则创建该key,并赋值为00自减后为-1,等同于增加 【key,-1】键值对
#如果该key存在,则value自减1
decr key

自增指定值

#如果该key不存在,则创建该key,并赋值为00自增numbers,等同于增加 【key,numbers】键值对
#如果该key存在,则value自增numbers
incrby key numbers

自减指定值

#如果该key不存在,则创建该key,并赋值为00自减numbers,等同于增加 【key,-numbers】键值对
#如果该key存在,则value自减numbers
decrby key numbers

【redis数据结构 – list】

list结构,也有的博客写的lists,列表结构,其实底层是用链表实现。
链表显然就有自己得有点和缺点了,相对于数组来说
链表:插入和删除快,但是查询慢,必须重头遍历
数组:插入和删除慢,但是查询快,随机访问性强

左边添加

lpush key value # lpush list1 1 2 3 

右边边添加

rpush key value # lpush list1 a b c

查看列表 (正序反序都可以)

lrange key start stop  # lrange list1 0 -1

指定位置push

lset key index value   # lset list1 0 d

删除

lpop key #删除列表最左边的value
rpop key #删除列表最右边的value
rpoplpush source distination
#从source列表右边删除一个value,并把这个value存储进入distination列表中 
#适用于消息发布过程中的备份操作

获取列表元素个数

llen key

lists的应用相当广泛,随便举几个例子:
1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
2.利用LRANGE还可以很方便的实现分页的功能。
3.在博客系统中,每片博文的评论也可以存入一个单独的list中。

【redis数据结构 – 集合】

和list类型不同的是,set集合中不允许出现重复的元素,set最大可以包含的元素是 4294967295 。注意,set中是没有顺序的。

添加

sadd key member [member ...] # sadd set1 a b c

查看

smembers key # smembers set1

删除某些值

srem key member [member ...] #srem  set1 a

删除整个集合

del key  # del set1 

差集运算

sdiff key1 [key ...] #求集合key1与其他集合的差集
sdiffstore destination key1 [key ...] #求集合key1与其他集合的差集,并把结果存储在destination集合中

交集运算

sinter key [key...] #求多个集合的交集
sinterstore destination key [key...] #求多个集合的交集,并把结果存储在destination集合中

并集运算

sunion key [key...] #求多个集合的并集
sunionstore destination key [key...] #求多个集合的并集,并把结果存储在destination集合中

查看member在key中是否存在

sismember key member

集合key中随机放回 count 个元素

srandmember key [count]

查看集合个数

scard key

对于集合的使用,也有一些常见的方式,比如,QQ有一个社交功能叫做“好友标签”,大家可以给你的好友贴标签,比如“大美女”、“土豪”、“欧巴”等等,这时就可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。

【redis数据结构 – 有序集合】

sorted set跟set是比较类似的,集合中不允许出现重复的元素,那么有啥区别呢?sorted set有顺序,从小到大排序,更新操作非常快,访问数据也非常高效。

应用场景:游戏排名、微博热点

添加元素

zadd key score member [score member ...] #zadd scsets 0 a 1 b 2 c

查看集合

zrange key start stop [withscores] #zrange scsets 0 -1 查看所有
zrange key start stop [withscores] #zrange scsets 0 2 withscores 查看0 -2 元素 并且显示score 
zscore key member #获取有序集合中的某个元素的score值

zrangebyscore key mim max [withscores] [limit offset count]

删除元素

zrem key member [member...] #zrem  scsets  a b
zremrangebyscore key min max   #zremrangebyscore scsets 0 2

查询个数

zcount key min max #zcount scsets  0 2

【redis数据结构 – 哈希】

哈希是从redis-2.0.0版本之后才有的数据结构。
hash可以存储多个键值对之间的映射,它就像是一个迷你型的redis。
hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

赋值

hset key field value # hset hsets name liu 单个赋值
hmset key field value [field value ... ] # hset hsets name liu age 18 sex man 多个赋值

取值

hget key field  # hget hsets name 获取单个值
hmget key field [field ...] # hget hsets name age 获取多个值
hgetall key # hget hsets 获取所有

增加数字

hincrby key field number #hincrby hsets age 1

删除

hdel key field #删除指定的file
del key #删除所有的key

查看key中的file是否存在

hexists key field #成功返回1 不存在返回0

查看key中有多少个file

hlen key

获取所有的file

hkeys key

获取所有file的value

hvals key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值