iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis有哪些基本数据结构和操作
  • 462
分享到

Redis有哪些基本数据结构和操作

2024-04-02 19:04:59 462人浏览 独家记忆
摘要

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

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

基本结构

一个String类型的key、value最大上限均是512M。其基本结构如下:基本语法

Redis中字符串的基本操作如下表所示。

使用场景-统计用户上线天数

Bitmap 对于一些特定类型的计算非常有效。

假设现在我们希望记录自己网站上的用户的上线频率,比如说,计算用户 A 上线了多少天,用户 B 上线了多少天,诸如此类,以此作为数据,从而决定让哪些用户参加 beta 测试等活动 —— 这个模式可以使用 SETBIT 和 BITCOUNT 来实现。

比如说,每当用户在某一天上线的时候,我们就使用 SETBIT ,以用户名作为 key ,将那天所代表的网站的上线日作为 offset 参数,并将这个 offset 上的为设置为 1 。

举个例子,如果今天是网站上线的第 100 天,而用户 peter 在今天阅览过网站,那么执行命令 SETBIT peter 100 1 ;如果明天 peter 也继续阅览网站,那么执行命令 SETBIT peter 101 1 ,以此类推。

当要计算 peter 总共以来的上线次数时,就使用 BITCOUNT 命令:执行 BITCOUNT peter ,得出的结果就是 peter 上线的总天数。

基本结构

Redis有哪些基本数据结构和操作

操作 语法 说明
BLPOP BLPOP key [key …] timeout BLPOP 是列表的阻塞式(blocking)弹出原语.它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞.
BRPOP BRPOP key [key …] timeout 它是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞.
BRPOPLPUSH BRPOPLPUSH source destination timeout BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本,当给定列表 source 不为空时, BRPOPLPUSH 的表现和 RPOPLPUSH 一样。当列表 source 为空时, BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH 或 RPUSH 命令为止。
LINDEX LINDEX key index 返回列表 key 中,下标为 index 的元素。
LINSERT LINSERT key BEFORE/AFTER pivot value 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。当 pivot 不存在于列表 key 时,不执行任何操作。当 key 不存在时, key 被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。
LLEN LLEN key 返回列表 key 的长度。
LPOP LPOP key 移除并返回列表 key 的头元素。
LPUSH LPUSH key value [value …] 将一个或多个值 value 插入到列表 key 的表头
LPUSHX LPUSHX key value 将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表
LRANGE LRANGE key start stop 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定
LREM LREM key count value 根据参数 count 的值,移除列表中与参数 value 相等的元素
LSET LSET key index value 将列表 key 下标为 index 的元素的值设置为 value
LTRIM LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。
RPOP RPOP key 移除并返回列表 key 的尾元素
RPOPLPUSH RPOPLPUSH source destination 命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
RPUSH RPUSH key value [value …] 将一个或多个值 value 插入到列表 key 的表尾(最右边)
RPUSHX RPUSHX key value 将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。

举一些例子:

127.0.0.1:6379> lpush stack "a" "b" "c" (integer) 3 127.0.0.1:6379> rpop stack "a"
		1	
		2	
		3	
		4	
  • 队列

127.0.0.1:6379> lpush queue "a" "b" "c" (integer) 3 127.0.0.1:6379> lpop queue "c" 
		1	
		2	
		3	
		4	
		5	
  • BLPOP

127.0.0.1:6379> exists job
(integer) 0 127.0.0.1:6379> blpop job 5 #一直阻塞到5s超时 (nil)
(5.03s)
		1	
		2	
		3	
		4	
		5	
  • LINDEX

127.0.0.1:6379> lpush myjob "my" "job" "is" "iter" (integer) 4 127.0.0.1:6379> lindex myjob -1 "my"
		1	
		2	
		3	
		4	

3. 哈希表Hash

存储的是一个field与value的映射表,即存储的是一个Map,每一条数据可以看做是key-field-value的格式,field-value对应的是Map的一个键值对。

基本语法

使用场景-存储社交关系

比如新浪的关注列表, 粉丝列表都是由hash实现的。

基本结构

Redis有哪些基本数据结构和操作

操作 语法 说明
SADD SADD key member [member …] 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略.
SCARD SCARD key 返回集合 key 的基数(集合中元素的数量).
SDIFF SDIFF key [key …] 返回一个集合的全部成员,该集合是所有给定集合之间的差集.
SDIFFSTORE SDIFFSTORE destination key [key …] 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集.
SINTER SINTER key [key …] 返回一个集合的全部成员,该集合是所有给定集合的交集.
SINTERSTORE SINTERSTORE destination key [key …] 这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集.
SISMEMBER SISMEMBER key member 判断 member 元素是否集合 key 的成员.
SMEMBERS SMEMBERS key 返回集合 key 中的所有成员.
SMOVE SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合.
SPOP SPOP key 移除并返回集合中的一个随机元素.
SRANDMEMBER SRANDMEMBER key [count] 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值.
SREM SREM key member [member …] 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略.
SUNION SUNION key [key …] 返回一个集合的全部成员,该集合是所有给定集合的并集.
SUNIONSTORE SUNIONSTORE destination key [key …] 这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集.
SSCAN SSCAN key cursor [MATCH pattern] [COUNT count] 详细信息请参考 SCAN 命令.

举一些例子

  • 差集

127.0.0.1:6379> sadd set1 "a1" "a2" "a3" (integer) 3 127.0.0.1:6379> sadd set2 "a1" "a3" "a4" (integer) 3 127.0.0.1:6379> sdiff set1 set2 1) "a2" 127.0.0.1:6379> sdiffstore set set1 set2
(integer) 1 127.0.0.1:6379> smembers set 1) "a2" 
		1	
		2	
		3	
		4	
		5	
		6	
		7	
		8	
		9	
		10	
		11	
  • 并集

127.0.0.1:6379> sadd set1 "a1" "a2" "a3" (integer) 3 127.0.0.1:6379> sadd set2 "a1" "a3" "a4" (integer) 3 127.0.0.1:6379> sunion set1 set2 1) "a4" 2) "a1" 3) "a3" 4) "a2" 
		1	
		2	
		3	
		4	
		5	
		6	
		7	
		8	
		9	
		10	
  • 交集

127.0.0.1:6379> sadd set1 "a1" "a2" "a3" (integer) 3 127.0.0.1:6379> sadd set2 "a1" "a3" "a4" (integer) 3 127.0.0.1:6379> smembers set 1) "a2" 127.0.0.1:6379> sinter set1 set2 1) "a3" 2) "a1" 127.0.0.1:6379> sinterstore set set1 set2
(integer) 2 127.0.0.1:6379> smembers set 1) "a1" 2) "a3" 
		1	
		2	
		3	
		4	
		5	
		6	
		7	
		8	
		9	
		10	
		11	
		12	
		13	
		14	
		15	

5. 有序集合SortedSet

和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score,所以sorted set是一个有序的集合。

基本语法

使用场景-用户得分排行榜

和Sets相比,Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。另外还可以用 Sorted Sets 来做带权重的队列,比如普通消息的 score 为1,重要消息的 score 为2,然后工作线程可以选择按 score 的倒序来获取工作任务。让重要的任务优先执行。 
带有权重的元素,比如一个游戏的用户得分排行榜

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

您可能感兴趣的文档:

--结束END--

本文标题: Redis有哪些基本数据结构和操作

本文链接: https://www.lsjlt.com/news/65206.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么查询当前用户所有的表
    要查询当前用户拥有的所有表,可以使用以下 sql 命令:select * from user_tables; 如何查询当前用户拥有的所有表 要查询当前用户拥有的所有表,可以使...
    99+
    2024-05-15
    oracle
  • oracle怎么备份表中数据
    oracle 表数据备份的方法包括:导出数据 (exp):将表数据导出到外部文件。导入数据 (imp):将导出文件中的数据导入表中。用户管理的备份 (umr):允许用户控制备份和恢复过程...
    99+
    2024-05-15
    oracle
  • oracle怎么做到数据实时备份
    oracle 实时备份通过持续保持数据库和事务日志的副本来实现数据保护,提供快速恢复。实现机制主要包括归档重做日志和 asm 卷管理系统。它最小化数据丢失、加快恢复时间、消除手动备份任务...
    99+
    2024-05-15
    oracle 数据丢失
  • oracle怎么查询所有的表空间
    要查询 oracle 中的所有表空间,可以使用 sql 语句 "select tablespace_name from dba_tablespaces",其中 dba_tabl...
    99+
    2024-05-15
    oracle
  • oracle怎么创建新用户并赋予权限设置
    答案:要创建 oracle 新用户,请执行以下步骤:以具有 create user 权限的用户身份登录;在 sql*plus 窗口中输入 create user identified ...
    99+
    2024-05-15
    oracle
  • oracle怎么建立新用户
    在 oracle 数据库中创建用户的方法:使用 sql*plus 连接数据库;使用 create user 语法创建新用户;根据用户需要授予权限;注销并重新登录以使更改生效。 如何在 ...
    99+
    2024-05-15
    oracle
  • oracle怎么创建新用户并赋予权限密码
    本教程详细介绍了如何使用 oracle 创建一个新用户并授予其权限:创建新用户并设置密码。授予对特定表的读写权限。授予创建序列的权限。根据需要授予其他权限。 如何使用 Oracle 创...
    99+
    2024-05-15
    oracle
  • oracle怎么查询时间段内的数据记录表
    在 oracle 数据库中查询指定时间段内的数据记录表,可以使用 between 操作符,用于比较日期或时间的范围。语法:select * from table_name wh...
    99+
    2024-05-15
    oracle
  • oracle怎么查看表的分区
    问题:如何查看 oracle 表的分区?步骤:查询数据字典视图 all_tab_partitions,指定表名。结果显示分区名称、上边界值和下边界值。 如何查看 Oracle 表的分区...
    99+
    2024-05-15
    oracle
  • oracle怎么导入dump文件
    要导入 dump 文件,请先停止 oracle 服务,然后使用 impdp 命令。步骤包括:停止 oracle 数据库服务。导航到 oracle 数据泵工具目录。使用 impdp 命令导...
    99+
    2024-05-15
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作