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

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

本文主要讲解“Redis中的基本数据类型有哪些”。本文的解释简单明了,易学易懂。接下来,请跟随边肖的思路,一起学习学习《Redis中的基本数据类型有哪些》!

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

00-1010对于redis,所有的键都是字符串。在讲基本数据结构的时候,我们讨论的是存储值的数据类型,主要包括五种常见的数据类型,分别是:String、List、Set、Zset和Hash。【相关推荐:Redis视频教程】

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

类型结构存储的值结构的读写能力String字符串可以是字符串、整数或浮点数,对整个字符串或字符串的一部分进行操作;自增或自减整数或浮点数;List列表一个链表,链表上的每个节点都包含一个字符串来推送和弹出链表的两端来读取单个或多个元素;根据值查找或删除元素;包含Set集合字符串的字符串集合,其基本方法是查看是否有添加、获取和删除;它还包括计算Hash散列,如交集、并集、差集等。包含键值对的无序哈希表包括以下方法:添加、获取和删除单个元素的Zset有序集合,用于存储键值对的字符串成员和浮点分数之间的有序映射,就像哈希一样;元素的顺序由分数决定。该方法包括添加、获取、删除单个元素,以及根据评分范围或成员获取元素

Redis数据结构简介

基础数据结构详解

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

字符串类型是二进制安全的,这意味着redis的字符串可以包含任何数据。例如数字、字符串、jpg图片或序列化对象。

命令使用

命令简要说明:使用GET nameSET获取存储在给定密钥中的值设置存储在给定密钥中的值设置名称值删除存储在给定密钥中的值DEL nameINCR将存储在密钥中的值加1INCR keyDECR将存储在密钥中的值减去1DECR keyINCRBY将整数INCRBY密钥量相加。DECRBY从密钥存储值中减去整数DECRBY keyamount命令执行

127 . 0 . 0 . 1:6379 sethellowworld

127.0.0.1:6379gethello

世界

127.0.0.1:6379delhello

(整数)nbs

p;1
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> get counter
"3"
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 value
LPUSH 将给定值推入到列表左端 LPUSH key value
RPOP 从列表的右端弹出一个值,并返回被弹出的值 RPOP key
LPOP 从列表的左端弹出一个值,并返回被弹出的值 LPOP key
LRANGE 获取列表在给定范围上的所有值 LRANGE key 0 -1
LINDEX 通过索引获取列表中的元素。你也可以使用负数下标,以 -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
"1"
127.0.0.1:6379> lindex mylist 10        # index不在 mylist 的区间范围内
(nil)
  • 实战场景

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

    • 消息队列

Set集合

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

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

  • 命令使用

命令 简述 使用
SADD 向集合添加一个或多个成员 SADD key value
SCARD 获取集合的成员数 SCARD key
SMEMBER 返回集合中的所有成员 SMEMBER key member
SISMEMBER 判断 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 value1
HGET 获取指定散列键的值 HGET hash-key key1
HGETALL 获取散列中包含的所有键值对 HGETALL hash-key
HDEL 如果给定键存在于散列中,那么就移除这个键 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 member1
ZRANGE 根据元素在有序集合中所处的位置,从有序集合中获取多个元素 ZRANGE zset-key 0-1 withccores
ZREM 如果给定元素成员存在于有序集合中,那么就移除这个元素 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中的基本数据类型有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/114470.html

(0)

相关推荐

  • windows中信号量和互斥量的区别是什么

    技术windows中信号量和互斥量的区别是什么本篇内容介绍了“windows中信号量和互斥量的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希

    2021年11月9日
  • 手机怎么拍一寸照片,自拍照如何做成一寸证件照

    技术手机怎么拍一寸照片,自拍照如何做成一寸证件照第一步,先打开手机上面的微信,点击下方的“发现”即可手机怎么拍一寸照片。在微信“发现”页面点击“小程序”,并且在输入框内输入证件照。此时,点击手机页面的证件照生成器进入就可

    生活 2021年10月30日
  • 怎么在PAAS平台上部署O2OA开发平台

    技术怎么在PAAS平台上部署O2OA开发平台这篇文章主要讲解了“怎么在PAAS平台上部署O2OA开发平台”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在PAAS平台上

    攻略 2021年10月30日
  • mysql中如何处理Plugin 'InnoDB' registration as a STORAGE ENGINE failed错误

    技术mysql中如何处理Plugin InnoDB registration as a STORAGE ENGINE failed错误这篇文章主要为大家展示了“mysql中如何处理Plugin InnoDB regist

    攻略 2021年11月6日
  • debug R命令如何修改寄存器的值

    技术debug R命令如何修改寄存器的值这期内容当中小编将会给大家带来有关debug R命令如何修改寄存器的值,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    IDE : Masm

    攻略 2021年11月11日
  • 抖音刷粉,抖音刷粉怎么做到的?

    技术抖音刷粉,抖音刷粉怎么做到的?抖音相信大家并不陌生,抖音现在可谓是最受大家欢迎的短视频平台。可能很多抖音的朋友经常分享的视频没有点赞,可能觉得很尴尬。
    抖音怎么刷粉?抖音运营方法有哪些,抖音是一个短视频领域,它可以是

    测评 2021年11月11日