一、简介

作为一款key-value 的NoSQL数据库,Redis支持的数据结构比较丰富,有:String(字符串) 、List(列表) 、Set(集合) 、Hash(哈希) 、Zset(有序集合),相对于其他四种数据结构,Zset 是Redis独有的数据结构,作为有序的集合来使用还是十分方便的,下面我来介绍这集中数据结构:

数据类型 描述
set 无序、不重复的字符串集合
list 字符串链表
string 字符串、整型、浮点型
hash key和value都是无序的hashtable
zset 字符串集合,每个字符串映射到一个浮点数分数,按照分数来排序

redis 各种数据结构的操作方法很多,下面大概列出来大部分方法,大家可以使用 redis-cli 来练习这些方法 :

二、string

序号     方法 描述
 1

SET key value

设置指定 key 的值

 2

GET key

获取指定 key 的值

 3

GETRANGE key start end

返回 key 中字符串值的子字符

 4

GETSET key value

将给定 key 的值设为 value ,并返回 key 的旧值(old value)

 5

GETBIT key offset

对 key 所储存的字符串值,获取指定偏移量上的位(bit)

 6

MGET key1 [key2..]

获取所有(一个或多个)给定 key 的值

 7

SETBIT key offset value

对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)

 8

SETEX key seconds value

将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)

 9

SETNX key value

只有在 key 不存在时设置 key 的值

 10

SETRANGE key offset value

用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始

11 

STRLEN key

返回 key 所储存的字符串值的长度

12 

MSET key value [key value ...]

同时设置一个或多个 key-value 对

13 

MSETNX key value [key value ...]

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在

14 

PSETEX key milliseconds value

这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位

15 

INCR key

将 key 中储存的数字值增一

16 

INCRBY key increment

将 key 所储存的值加上给定的增量值(increment)

17 

INCRBYFLOAT key increment

将 key 所储存的值加上给定的浮点增量值(increment)

 18

DECR key

将 key 中储存的数字值减一

 19

DECRBY key decrement

key 所储存的值减去给定的减量值(decrement)

 20

APPEND key value

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾

三、set

序号  方法 描述
1

SADD key member1 [member2]

向集合添加一个或多个成员

2

SCARD key

获取集合的成员数

3

SDIFF key1 [key2]

返回给定所有集合的差集

4

SDIFFSTORE destination key1 [key2]

返回给定所有集合的差集并存储在 destination 中

5

SINTER key1 [key2]

返回给定所有集合的交集

6

SINTERSTORE destination key1 [key2]

返回给定所有集合的交集并存储在 destination 中

7

SISMEMBER key member

判断 member 元素是否是集合 key 的成员

8

SMEMBERS key

返回集合中的所有成员

9

SMOVE source destination member

将 member 元素从 source 集合移动到 destination 集合

10

SPOP key

移除并返回集合中的一个随机元素

11

SRANDMEMBER key [count]

返回集合中一个或多个随机数

12

SREM key member1 [member2]

移除集合中一个或多个成员

13

SUNION key1 [key2]

返回所有给定集合的并集

14

SUNIONSTORE destination key1 [key2]

所有给定集合的并集存储在 destination 集合中

15

SSCAN key cursor [MATCH pattern] [COUNT count]

迭代集合中的元素

四、list

序号          方法 描述
1

BLPOP key1 [key2 ] timeout

移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

2

BRPOP key1 [key2 ] timeout

移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

3

BRPOPLPUSH source destination timeout

从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现

可弹出元素为止

4

LINDEX key index

 通过索引获取列表中的元素
5

LINSERT key BEFORE|AFTER pivot value

 在列表的元素前或者后插入元素
6

LLEN key

 获取列表长度
7

LPOP key

 移出并获取列表的第一个元素
8

LPUSH key value1 [value2]

 将一个或多个值插入到列表头部
9

LPUSHX key value

 将一个值插入到已存在的列表头部
10

LRANGE key start stop

 获取列表指定范围内的元素
11

LREM key count value

 移除列表元素
12

LSET key index value

 通过索引设置列表元素的值
13

LTRIM key start stop

 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
14

RPOP key

 移除并获取列表最后一个元素
15

RPOPLPUSH source destination

 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
16

RPUSH key value1 [value2]

 在列表中添加一个或多个值
17

RPUSHX key value

 为已存在的列表添加值

五、hash

序号   方法 描述
1

HDEL key field1 [field2]

删除一个或多个哈希表字段

2

HEXISTS key field

查看哈希表 key 中,指定的字段是否存在

3

HGET key field

获取存储在哈希表中指定字段的值

4

HGETALL key

获取在哈希表中指定 key 的所有字段和值

5

HINCRBY key field increment

为哈希表 key 中的指定字段的整数值加上增量 increment

6

HINCRBYFLOAT key field increment

为哈希表 key 中的指定字段的浮点数值加上增量 increment

7

HKEYS key

获取所有哈希表中的字段

8

HLEN key

获取哈希表中字段的数量

9

HMGET key field1 [field2]

获取所有给定字段的值

10

HMSET key field1 value1 [field2 value2 ]

同时将多个 field-value (域-值)对设置到哈希表 key 中

11

HSET key field value

将哈希表 key 中的字段 field 的值设为 value

12

HSETNX key field value

只有在字段 field 不存在时,设置哈希表字段的值

13

HVALS key

获取哈希表中所有值

14

HSCAN key cursor [MATCH pattern] [COUNT count]

迭代哈希表中的键值对

六、zset

序号   方法 描述
1

ZADD key score1 member1 [score2 member2]

向有序集合添加一个或多个成员,或者更新已存在成员的分数

2

ZCARD key

获取有序集合的成员数

3

ZCOUNT key min max

计算在有序集合中指定区间分数的成员数

4

ZINCRBY key increment member

有序集合中对指定成员的分数加上增量 increment

5

ZINTERSTORE destination numkeys key [key ...]

计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中

6

ZLEXCOUNT key min max

在有序集合中计算指定字典区间内成员数量

7

ZRANGE key start stop [WITHSCORES]

通过索引区间返回有序集合成指定区间内的成员

8

ZRANGEBYLEX key min max [LIMIT offset count]

通过字典区间返回有序集合的成员

9

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]

通过分数返回有序集合指定区间内的成员

10

ZRANK key member

返回有序集合中指定成员的索引

11

ZREM key member [member ...]

移除有序集合中的一个或多个成员

12

ZREMRANGEBYLEX key min max

移除有序集合中给定的字典区间的所有成员

13

ZREMRANGEBYRANK key start stop

移除有序集合中给定的排名区间的所有成员

14

ZREMRANGEBYSCORE key min max

移除有序集合中给定的分数区间的所有成员

15

ZREVRANGE key start stop [WITHSCORES]

返回有序集中指定区间内的成员,通过索引,分数从高到底

16

ZREVRANGEBYSCORE key max min [WITHSCORES]

返回有序集中指定分数区间内的成员,分数从高到低排序

17

ZREVRANK key member

返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

18

ZSCORE key member

返回有序集中,成员的分数值

19

ZUNIONSTORE destination numkeys key [key ...]

计算给定的一个或多个有序集的并集,并存储在新的 key 中

20

ZSCAN key cursor [MATCH pattern] [COUNT count]

迭代有序集合中的元素(包括元素成员和元素分值)

官网文档地址: https://redis.io/commands

Redis学习——数据结构介绍(四)的更多相关文章

  1. Redis学习01——介绍与搭建环境

    Redis学习01介绍与搭建环境一简介二yum配置已经配置了的可以跳过三安装gcc四安装redis1 上传Redis到linux中2 解压到usrlocal下3 编译redis4 安装redis5 拷 ...

  2. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  3. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  4. Redis 底层数据结构介绍

    Redis 底层数据结构 版本:2.9 支持的数据类型: 字符串 散列 列表 集合 有序集合 字符串 Redis 利用原生的 c 字符串进行了一次封装.封装的字符串叫做简单动态字符串:SDS(simp ...

  5. Redis学习笔记(4)——Redis五大数据结构介绍以及应用场景

    出处:https://www.jianshu.com/p/f09480c05e42 Redis是典型的Key-Value类型数据库,Key为字符类型,Value的类型常用的为五种类型:String.H ...

  6. Redis学习笔记(四)——数据结构之List

    一.介绍 Redis列表(List)是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(left)或者尾部(right),一个列表最多可以包含232-1个元素(4294967295, ...

  7. Redis学习——数据结构下

    4.集合(集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素.) 1.命令 .集合内操作 1.添加元素 ...

  8. 【转】Redis学习笔记(四)如何用Redis实现分布式锁(1)—— 单机版

    原文地址:http://bridgeforyou.cn/2018/09/01/Redis-Dsitributed-Lock-1/ 为什么要使用分布式锁 这个问题,可以分为两个问题来回答: 为什么要使用 ...

  9. Redis 学习笔记(四)RDB 和 AOF 持久化机制

    一.Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要 ...

随机推荐

  1. 推荐一款免费的PDF转换工具 | PDFCandy

    相信大家在用的PDF转换工具也很多,下面良心推荐这款软件(PDFCandy)给大家,方便在今后的工作中进行运用.提高大家的工作效率. PDFCandy分为两种:网页端和客户端.(根据大家的喜好度来进行 ...

  2. Hadoop优化

    一.影响MR程序效率的因素 1.计算机性能: CPU.内存.磁盘.网络, 计算机的性能会影响MR程序的速度与效率 2.I/O方面 1)数据倾斜(代码优化) 2)map和reduce数量设置不合理(通过 ...

  3. Nginx status详解

    1. 启用nginx status配置 server {        listen *:80 default_server;        server_name _;        locatio ...

  4. SQL Server 分区表上建立ColumnStore Index 如何添加新分区方法与步骤

    在生产环境中会遇到这样的场景,一个表随着时间的推移,越来越大,这个时候我们开始动手为这个表建立分区来改进查询性能. 但是表过大上百个G的时候,在数据仓库中,为了改进查询性能,我们可以添加在分区表的基础 ...

  5. mysql 8.0 密码加密方式的坑

    问题:新安装好MySQL 8.0和Navicat之后,连接时总是报: 1251 Client does not support authentication protocol requested by ...

  6. ftp无法上传问题

    1.背景 ftp服务端和客户端一直未做任何改动,无法上传属于突发状态,除此客户端外其他客户端上传正常 客户端(SunOS系统)可以正常连接ftp的xxx21端口,但是传输数据(文件)时无法正常传输 上 ...

  7. 乞丐版JAVA扫雷

    事先声明:本人是一位刚接触Java不久的菜鸟,所以代码写的略显臃肿,敬请谅解!这个扫雷是我在暑假时做的,灵感来源于csdn上某位大神的博客,不过我个人实在不喜欢他的代码实现,于是我自己写了一个实现上不 ...

  8. VS2017无法发现单元测试,不能运行单元测试的解决方案

    问题: 在VS2017中新建空的单元测试后,无法运行测试,即右键菜单的"运行测试"和"调试测试" 不能运行,在测试资源管理中也无法列出这个测试. 解决方案: 1 ...

  9. javascript函数传值问题(传值?址)

    通常对于我们开发者来说,有不少人是忽略了这些小问题的,但是我们又必要去了解.因为今天一个朋友问起,所以写到这里来了, 在C#中,我们知道如果要往一个函数中传递参数的类型为对象,数组或者其他引用类型时. ...

  10. React组件和生命周期简介

        React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...