Redis中的基本数据类型有哪些

42次阅读
没有评论

共计 4049 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章主要讲解了“Redis 中的基本数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Redis 中的基本数据类型有哪些”吧!

Redis 数据结构简介

对 redis 来说,所有的 key(键)都是字符串。我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的 5 种数据类型,分别是:String、List、Set、Zset、Hash。【相关推荐:Redis 视频教程】

结构类型结构存储的值结构的读写能力 String 字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;List 列表一个链表,链表上的每个节点都包含一个字符串对链表的两端进行 push 和 pop 操作,读取单个或多个元素;根据值查找或删除元素;Set 集合包含字符串的无序集合字符串的集合,包含基础的方法有看是否存在添加、获取、删除;还包含计算交集、并集、差集等 Hash 散列包含键值对的无序散列表包含方法有添加、获取、删除单个元素 Zset 有序集合和散列一样,用于存储键值对字符串成员与浮点数分数之间的有序映射;元素的排列顺序由分数的大小决定;包含方法有添加、获取、删除单个元素以及根据分值范围或成员来获取元素基础数据结构详解 String 字符串

String 是 redis 中最基本的数据类型,一个 key 对应一个 value。

String 类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。如数字,字符串,jpg 图片或者序列化的对象。

命令使用

命令简述使用 GET 获取存储在给定键中的值 GET nameSET 设置存储在给定键中的值 SET name valueDEL 删除存储在给定键中的值 DEL nameINCR 将键存储的值加 1INCR keyDECR 将键存储的值减 1DECR keyINCRBY 将键存储的值加上整数 INCRBY key amountDECRBY 将键存储的值减去整数 DECRBY key amount

命令执行

127.0.0.1:6379  set hello world
127.0.0.1:6379  get hello
 world 
127.0.0.1:6379  del hello
(integer) 1
127.0.0.1:6379  get hello
(nil)
127.0.0.1:6379  get counter
127.0.0.1:6379  incr counter
(integer) 3
127.0.0.1:6379  get counter
127.0.0.1:6379  incrby counter 100
(integer) 103
127.0.0.1:6379  get counter
 103 
127.0.0.1:6379  decr counter
(integer) 102
127.0.0.1:6379  get counter
 102

实战场景

缓存:经典使用场景,把常用信息,字符串,图片或者视频等信息放到 redis 中,redis 作为缓存层,mysql 做持久化层,降低 mysql 的读写压力。

计数器:redis 是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。

session:常见方案 spring session + redis 实现 session 共享,

List 列表

Redis 中的 List 其实就是链表(Redis 用双端链表实现 List)。

使用 List 结构,我们可以轻松地实现最新消息排队功能(比如新浪微博的 TimeLine)。List 的另一个应用就是消息队列,可以利用 List 的 PUSH 操作,将任务存放在 List 中,然后工作线程再用 POP 操作将任务取出进行执行。

命令使用

命令简述使用 RPUSH 将给定值推入到列表右端 RPUSH key valueLPUSH 将给定值推入到列表左端 LPUSH key valueRPOP 从列表的右端弹出一个值,并返回被弹出的值 RPOP keyLPOP 从列表的左端弹出一个值,并返回被弹出的值 LPOP keyLRANGE 获取列表在给定范围上的所有值 LRANGE key 0 -1LINDEX 通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素,-2 表示列表的倒数第二个元素,以此类推。LINEX key index

使用列表的技巧

lpush+lpop=Stack(栈)

lpush+rpop=Queue(队列)

lpush+ltrim=Capped Collection(有限集合)

lpush+brpop=Message Queue(消息队列)

命令执行

127.0.0.1:6379  lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379  lrange mylist 0 -1
1)  mem 
2)  ls 
3)  ll 
4)  2 
5)  1 
127.0.0.1:6379  lindex mylist -1
127.0.0.1:6379  lindex mylist 10 # index 不在  mylist  的区间范围内
(nil)

实战场景

微博 TimeLine: 有人发布微博,用 lpush 加入时间轴,展示新的列表信息。

消息队列

Set 集合

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

命令使用

命令简述使用 SADD 向集合添加一个或多个成员 SADD key valueSCARD 获取集合的成员数 SCARD keySMEMBER 返回集合中的所有成员 SMEMBER key memberSISMEMBER 判断 member 元素是否是集合 key 的成员 SISMEMBER key member

其它一些集合操作,请参考这里

https://www.runoob.com/redis/redis-sets.html

命令执行

127.0.0.1:6379  sadd myset ycf ycf1 xiao ycf
(integer) 3
127.0.0.1:6379  smember myset
1)  xiao 
2)  ycf1 
3)  ycf 
127.0.0.1:6379  sismember myset ycf
(integer) 1

实战场景

标签(tag), 给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人。

点赞,或点踩,收藏等,可以放到 set 中实现

Hash 散列

Redis hash 是一个 string 类型的 field(字段)和 value(值)的映射表,hash 特别适合用于存储对象。

命令使用

命令简述使用 HSET 添加键值对 HSET hash-key sub-key1 value1HGET 获取指定散列键的值 HGET hash-key key1HGETALL 获取散列中包含的所有键值对 HGETALL hash-keyHDEL 如果给定键存在于散列中,那么就移除这个键 HDEL hash-key sub-key1

命令执行

127.0.0.1:6379  hset user name1 ycf
(integer) 1
127.0.0.1:6379  hset user email1 ycf@163.com
(integer) 1
127.0.0.1:6379  hgetall user
1)  name1 
2)  ycf 
3)  email1 
4)  ycf@163.com 
127.0.0.1:6379  hget user user
(nil)
127.0.0.1:6379  hget user name1
 ycf 
127.0.0.1:6379  hset user name2 xiaoycf
(integer) 1
127.0.0.1:6379  hset user email2 xiaoycf@163.com
(integer) 1
127.0.0.1:6379  hgetall user
1)  name1 
2)  ycf 
3)  email1 
4)  ycf@163.com 
5)  name2 
6)  xiaoycf 
7)  email2 
8)  xiaoycf@163.com

实战场景

缓存:能直观,相比 string 更节省空间,的维护缓存信息,如用户信息,视频信息等。

Zset 有序集合

Redis 有序集合和集合一样也是 string 类型元素的集合, 且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的, 但分数 (score) 却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

命令使用

命令简述使用 ZADD 将一个带有给定分值的成员添加到哦有序集合里面 ZADD zset-key 178 member1ZRANGE 根据元素在有序集合中所处的位置,从有序集合中获取多个元素 ZRANGE zset-key 0-1 withccoresZREM 如果给定元素成员存在于有序集合中,那么就移除这个元素 ZREM zset-key member1

命令执行

127.0.0.1:6379  zadd myscoreset 100 ycf 90 xiaoycf
(integer) 2
127.0.0.1:6379  ZRANGE myscoreset 0 -1
1)  xiaoycf 
2)  ycf 
127.0.0.1:6379  ZSCORE myscoreset ycf
 100

实战场景

排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

感谢各位的阅读,以上就是“Redis 中的基本数据类型有哪些”的内容了,经过本文的学习后,相信大家对 Redis 中的基本数据类型有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计4049字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)