《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的常见基础数据结构,《玩转Redis-Redis基础数据结构及核心命令》相关操做命令为方便对比分析,使用脑图展现(若手机端查看图片不方便,可搜索zxiaofan前往PC网页端<CSDN、 开源中国 等平台>查看)。git
最新思惟导图原图可联系公众号【zxiaofan】后台获取。
github
本文更适合用于复习总结,阅读》实战》阅读 更有效果哟,主要包含如下内容:redis
后续会介绍其余高级数据结构:数组
文章思路:安全
异常统一说明:
error(out of range)导图简写@EOOR;
负数偏移量表示倒数第几,导图简写@LBN(last but number);bash
String能够说是Redis中最多见的数据结构,没有之一。
String结构可存储字符串或者各类类型的二进制数据。服务器
String底层结构是动态字符串,可修改指定位置数据,经过预分配冗余空间减小内存的频繁分配,实际分配的空间capacity通常要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,若是超过1M,扩容时一次只会多扩1M的空间。字符串最大长度为512M(51210241024个字符)。
数字及浮点数在Redis中以字符串形式存储。微信
// 如何证实 String最大长度是512M;
// 512M=512*1024*1024;
127.0.0.1:6379> setrange ran 536870911 a
(integer) 536870912
127.0.0.1:6379> strlen ran
(integer) 536870912
127.0.0.1:6379> append ran a
(error) ERR string exceeds maximum allowed size (512MB)
复制代码
String命令支持如下操做类型:单一操做、批量操做、字符操做、位操做、计数操做。数据结构
【核心命令】:SET、SETNX、SETEX、PSETEX、GET、GETSET、APPEND、STRLEN;app
注意:
【Redis-String单元素操做】命令简述:
命令 | 功能 | 参数 |
---|---|---|
SET | 设置value值,支持选项 | key value [expiration EX seconds/PX milliseconds] [NX/XX] |
SETNX | key不存在才容许设置 | key value |
SETEX | 设置value及过时时间(秒) | key seconds value |
PSETEX | 设置value及过时时间(毫秒) | key milliseconds value |
GET | 查询指定key | key |
GETSET | 查询返回旧值设置新值 | key value |
APPEND | value追加字符串 | key value |
STRLEN | 查询value长度 | key |
【Redis-String单元素操做】命令详细对比分析以下:
【核心命令】:MSET、MGET;
注意:
【Redis-String批量操做】命令简述:
命令 | 功能 | 参数 |
---|---|---|
MSET | 批量设置 | key value [key value ...] |
MGET | 批量查询 | key [key ...] |
【Redis-String批量操做】命令详细对比分析以下:
【核心命令】:SETRANGE、GETRANGE;
注意:
【Redis-String指定范围处理】命令简述:
命令 | 功能 | 参数 |
---|---|---|
SETRANGE | 设置指定偏移量位置的字符 | key offset value |
GETRANGE | 查询指定区间字符串 | key start end【@LBN;offset大于len将自动以len为准】 |
【Redis-String指定范围处理】命令详细对比分析以下:
【核心命令】:INCR/DECR、INCRBY/DECRBY、INCRBYFLOAT;
注意:
【Redis-String递增操做】命令简述:
命令 | 功能 | 参数 |
---|---|---|
INCR/DECR | 递增/1递减1 | key |
INCRBY/DECRBY | 递增n/递减n | key increment(支持负数) |
INCRBYFLOAT | 递增浮点值 | key increment(支持负数) |
【Redis-String递增操做】命令详细对比分析以下:
【核心命令】:SETBIT、BITOP、GETBIT、BITCOUNT、BITFIELD、BITPOS;
注意:
【Redis-String位操做】命令简述:
命令 | 功能 | 参数 |
---|---|---|
SETBIT | 指定偏移量bit位置设置值 | key offset value【0=< offset< 2^32】 |
BITOP | 对一个或多个key执行逻辑操做,并将结果保存到destkey | operation destkey key [key ...]【AND, OR, XOR, NOT】 |
GETBIT | 查询指定偏移位置的bit值 | key offset |
BITCOUNT | 统计指定区间bit为1的数量 | key [start end]【@LBN】 |
BITFIELD | 操做多字节位域 | key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP/SAT/FAIL] |
BITPOS | 查询指定区间第一个被设置成1的bit位的位置 | key bit [start] [end]【@LBN】 |
【Redis-String位操做】命令详细对比分析以下:
概述:
【核心命令】:LPUSH、RPUSH、LPUSHX、RPUSHX、RPOPLPUSH、BRPOPLPUSH;
注意:
【Redis-List新增元素操做】命令简述:
命令 | 功能 | 参数 |
---|---|---|
LPUSH / RPUSH | (批量)添加元素 | key value [value ...] |
LPUSHX / RPUSHX | 向已存在的list中添加单个元素 | key value |
RPOPLPUSH | 弹出source尾压入dest头部 | source destination |
BRPOPLPUSH | 阻塞式弹出source压入dest | source destination timeout |
【Redis-List新增元素操做】命令详细对比分析以下:
【核心命令】:LPOP、RPOP、BLPOP、BRPOP;
注意:
【Redis-List弹出元素操做】命令简述:
命令 | 功能 | 参数 |
---|---|---|
LPOP / RPOP | 弹出元素 | key |
BLPOP / BRPOP | 阻塞式弹出元素 | key [key ...] timeout |
【Redis-List弹出元素操做】命令详细对比分析以下:
【核心命令】:LSET、LINDEX、LRANGE、LTRIM、LREM;
注意:
【Redis-List处理指定位置元素】命令简述:
命令 | 功能 | 参数 |
---|---|---|
LSET | 指定位置设置元素 | key index value |
LINDEX | 查询指定位置元素 | key index |
LRANGE | 查询指定区间元素 | key start stop |
LTRIM | 保留指定区间元素 | key start stop |
LREM | 移除前/后count次的value元素 | key count value |
【Redis-List处理指定位置元素】命令详细对比分析以下:
概述:
【核心命令】:SADD(增)、SCADD(数量统计)、SISMEMBER(存在)、SMEMBERS(全部元素)、SREM(移除)、SMOVE(移动);
注意:
【Redis-Set增删移动及统计】命令简述:
命令 | 功能 | 参数 |
---|---|---|
SADD | (批量)添加元素到Set中 | key member [member ...] |
SCARD | 统计Set中元素数量 | key |
SISMEMBER | 判断指定元素是否存在于Set中 | key member |
SMEMBERS | 返回Set中的全部元素 | key |
SMOVE | 移动Set的指定元素到另外一个集合 | source destination member |
SRANDMEMBER | 返回Set中count个随机元素 | key [count] |
SPOP | 移除并返回Set中count个随机元素 | key [count] |
SREM | 移除Set中指定的元素 | key member [member ...] |
SSCAN | 迭代Set | key cursor [MATCH pattern] [COUNT count] |
【Redis-Set增删移动及统计】命令详细对比分析以下:
【核心命令】:差集SDIFF/SDIFFSTORE、交集SINTER/SINTERSTORE、并集SUNION/SUNIONSTORE;
注意:
【Redis-Set集合运算】命令简述:
命令 | 功能 | 参数 |
---|---|---|
SDIFF | 【差集】返回在第一个set中但不在其余set中的元素集合 | key [key ...] |
SDIFFSTORE | 【差集】将SDIFF结果存入destination | destination key [key ...] |
SINTER | 【交集】返回(多个)set集合的交集 | key [key ...] |
SINTERSTORE | 【交集】将多个set集合的交集存入dest | destination key [key ...] |
SUNION | 【并集】返回多个set的并集 | key [key ...] |
SUNIONSTORE | 【并集】将多个set集合的并集存入dest | destination key [key ...] |
【Redis-Set集合运算】命令详细对比分析以下:
概述:
【核心命令】:HSET、HSETNX、HMSET;HGET、HMGET、HGETALL;
注意:
【Redis-Hash新增、查询元素】命令简述:
命令 | 功能 | 参数 |
---|---|---|
HSET | 设置hash中指定字段的值 | key field value |
HSETNX | field不存在才设置hash中指定field的值 | key field value |
HMSET | 批量设置hash值 | key field value [field value ...] |
HGET | 查询hash中指定字段的值 | key field |
HMGET | 批量查询指定field的value | key field [field ...] |
HGETALL | 查询全部field-value列表 | key |
【Redis-Hash新增、查询元素】命令详细对比分析以下:
【核心命令】:HKEYS、HVALS、HLEN;HDEL、HEXISTS、HSTRLEN;HINCRBY、HINCRBYFLOAT;HSCAN;
注意:
【Redis-Hash统计、修改、删除】命令简述:
命令 | 功能 | 参数 |
---|---|---|
HKEYS | 查询全部field列表 | key |
HVALS | 查询全部value列表 | key |
HLEN | 查询hash的field数量 | key |
HDEL | 移除hash中指定field字段 | key field [field ...] |
HEXISTS | 判断hash中是否存在指定field | key field |
HSTRLEN | 查询hash中filed关联的value字符串的长度 | key field |
HINCRBY | 增长hash中指定field的值 | key field increment |
HINCRBYFLOAT | 增长hash中指定field的值 | key field increment |
HSCAN | 基于游标迭代hashes | key cursor [MATCH pattern] [COUNT count] |
【Redis-Hash统计、修改、删除】命令详细对比分析以下:
《玩转Redis-Redis基础数据结构及核心命令》至此结束,后续将继续分享Redis其余数据结构及核心命令。
祝君好运!
Life is all about choices!
未来的你必定会感激如今拼命的本身!
【CSDN】【GitHub】【OSCHINA】【掘金】【微信公众号】