Redis学习——数据结构介绍(四)
一、简介
作为一款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学习——数据结构介绍(四)的更多相关文章
- Redis学习01——介绍与搭建环境
Redis学习01介绍与搭建环境一简介二yum配置已经配置了的可以跳过三安装gcc四安装redis1 上传Redis到linux中2 解压到usrlocal下3 编译redis4 安装redis5 拷 ...
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
- Redis 底层数据结构介绍
Redis 底层数据结构 版本:2.9 支持的数据类型: 字符串 散列 列表 集合 有序集合 字符串 Redis 利用原生的 c 字符串进行了一次封装.封装的字符串叫做简单动态字符串:SDS(simp ...
- Redis学习笔记(4)——Redis五大数据结构介绍以及应用场景
出处:https://www.jianshu.com/p/f09480c05e42 Redis是典型的Key-Value类型数据库,Key为字符类型,Value的类型常用的为五种类型:String.H ...
- Redis学习笔记(四)——数据结构之List
一.介绍 Redis列表(List)是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(left)或者尾部(right),一个列表最多可以包含232-1个元素(4294967295, ...
- Redis学习——数据结构下
4.集合(集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素.) 1.命令 .集合内操作 1.添加元素 ...
- 【转】Redis学习笔记(四)如何用Redis实现分布式锁(1)—— 单机版
原文地址:http://bridgeforyou.cn/2018/09/01/Redis-Dsitributed-Lock-1/ 为什么要使用分布式锁 这个问题,可以分为两个问题来回答: 为什么要使用 ...
- Redis 学习笔记(四)RDB 和 AOF 持久化机制
一.Redis 持久化简介 Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要 ...
随机推荐
- Delphi中DataSet和JSON的互转
//1)数据集转换为JSON字符串://需USES System.JSON; function DataSetToJson(ADataset: TDataSet): string; // [{&quo ...
- POJ 3268 (dijkstra变形)
题目链接 :http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveni ...
- leetcode刷题六<z字形变换>
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需要从左往右逐 ...
- js中将字符串作为函数名来调用的方法
方法:eval() eg: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 微信跳转之WAP跳转微信公众号关注页面链接weixin://dl/business/?ticket=
本文整理了部分微信 URL Schemes,经过本人测试,所有url在微信 6.3.22 版本下都可正常工作.大家可以在 Safari 中打开链接进行尝试.(部分链接仅允许在微信内部浏览器中打开,已用 ...
- socketserver模块TCP和UDP协议形式
# >>>>>>>>>>>>>>>>>>>>服务端socketserver模块通 ...
- angular.lowercase()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- mybatis invalid comparison: java.sql.Timestamp and java.lang.String报错解决方法
这个错的意思是:java.sql.Timestamp和java.lang.String无效的比较 错误的原因是:拿传入的时间类型参数与空字符串进行比较就会报这个异常 解决方法:只保留非null判断就可 ...
- django+javascrpt+python实现私有云盘
代码稍后上,先整理下私有云盘的相关功能介绍. 1.登陆界面 2.首页展示,有个人目录.部门目录以及公司目录,针对不用的目录设置不同的权限控制. 3.个人信息展示 4.账号管理.账号信息展示 5.账号添 ...
- VUE 出现Access to XMLHttpRequest at 'http://192.168.88.228/login/Login?phone=19939306484&password=111' from origin 'http://localhost:8080' has been blocked by CORS policy: The value of the 'Access-Contr
报错如上图!!!! 解决办法首先打开 config -> index.js ,粘贴 如下图代码,'https://www.baidu.com'换成要访问的的api域名,注意只要域名就够了, ...