Redis五种数据结构(二)
Redis数据结构
Redis数据结构介绍
- 字符串(String)
- 哈希(hash)
- 字符串列表(list)
- 字符串集合(set)
- 有序字符串集合(sorted set)
- key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率。
- key不要太短,如果太短会降低key的可读性。
- 在项目中,key最好有一个统一的命名规范。
存储string
赋值
- Set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回”OK”

取值
- get key :获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果改key不存在,返回(nil)


- Getset key value:先获取该key的值,然后在设置改key的值。

删除
- Del key:删除指定key

数值增减
- Incr key:将指定的key的value原子性的递增1,如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息.

- Decr key :将指定的key的value原子性的递减1,如果该key不存在,其初始值为0,在incr之后其值为-1,如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息.

追加
- Append key value:拼凑字符串。如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key/value.

存储hash
赋值
- Hset key field value:为指定的key设定field/value对(键值对)。

- Hmset key field value[field2 value2…]:设置key中的多个field/value

取值
- Hget key field :返回指定的key中的field的值

- Hmget key field1 field2…:获取key中的多个field值

- Hgetall key:获取key中的所有filed-value

删除
- Hdel key field[field…] :可以删除一个或多个字段,返回值是被删除的字段个数

增加数字
- Hincrby key field incement:设置key中filed的值增加increment,如age增加20

扩展
- Hexists key field:判断指定的key中的field 是否存在。

- Hlen key:获取key所包含的field 数量

- Hkeys key :获取所有的key

存储list


两端添加
- Lpush key values[value1 value2…]:在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。

- Rpush key values[value1、value2…]:在该list的尾部添加元素。

查看列表
- Lrange key start end: 获取链表中从start到end的元素的值,start,end从0开始计数;也可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,以此类推….

两端弹出
- Lpop key :返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素。

- Rpop key :从尾部弹出元素


获取列表中元素的个数
- Llen key:返回指定的key关联的链表中的元素的数量。

删除
- Lrem key count value: 删除count 个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。


扩展
- Lpushx key value:仅当参数中指定的key存在时,向关联的list的头部插入value,如果不存在,将不进行插入。

- Rpushx key value:在list尾部添加元素

- Lset key index value:设置链表中的index的角标的元素值,0代表链表的头元素,-1代表链表的尾元素。操作链表的角标不存在则抛异常。

- Linsert key before |after pivot value: 在pivot元素前或者后插入value这个元素。


- 将mylist5右端弹出,压入到mylist6 左边

- 将mylist6右端数据弹出,压入到左端

应用范围
4.存储set
添加/删除元素
- Sadd key values[value1、value2…]:向set中添加数据,如果该key的值已有则不会重复添加

- Srem key members[member1、member2…]:删除set中指定的成员

获取集合中的元素
- Smembers key:获取set中所有的成员

集合的差集运算
- Sdiff key1 key2…:返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集。(属于A并且不属于B的元素构成的集合)

集合的交集运算
- Sinter key1 key2 key3…:返回交集(属于A且属于B的元素构成的集合)

- Sunion key1 key2 key3…:返回并集(属于A或者属于B的元素构成的集合)

应用范围
5.存储sortedset
添加元素
- Zadd key score member score2 member2….: 将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数替换原有的分数


获得元素
- Zscore key member:返回指定成员的分数

- Zcard key:获取集合中的成员数量

删除元素
- Zrem key member[member…]:移除集合中指定的成员,可以指定多个成员。

- Zrange key start end[withscores]:获取集合中角标为start-end的成员,[withscores]表示包含其分数
- Zrevrange key start stop [withscores]:照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
Redis五种数据结构(二)的更多相关文章
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- 2.Redis五种数据结构
2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...
- redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合
redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...
- Redis(一)、Redis五种数据结构
Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安 ...
- Redis 五种数据结构详解(string,hash,list,set,zset)
一.五种数据结构: 1. String--字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候e ...
- Redis五种数据结构(Windows Server)
1.Redis的五种数据结构 这里推荐大家在命名redis的key的时候最好的加上前缀,并且使用 :来分割前缀 ,这里在使用可视化工具查看的时候就比较好区分,比如我的的前缀是 Demo:test:(一 ...
- Redis五种数据结构简介
Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...
- Redis五种数据结构解析
Redis是一个开源的Key-Value存储引擎,它支持string.hash.list.set和sorted set等多种值类型.由于其卓越的性能表现.丰富的数据类型及稳定性,广泛用于各种需要k/v ...
随机推荐
- go string类型的特性
参考文章: http://c.biancheng.net/view/36.html 1. 获取ascii类型字符的长度个数和获取utf8类型字符长度的个数 a. len("咪咪") ...
- 带你手写基于 Spring 的可插拔式 RPC 框架(四)代理类的注入与服务启动
上一章节我们已经实现了从客户端往服务端发送数据并且通过反射方法调用服务端的实现类最后返回给客户端的底层协议. 这一章节我们来实现客户端代理类的注入. 承接上一章,我们实现了多个底层协议,procoto ...
- redis设置密码和其它服务器连接
在cenos中 vim /etc/redis.conf 中 /输入 requirepass enter件一下 小写 n 一下 吧 # requirepass #去掉,后面写你的密码 #其它机器连接 v ...
- ZoomEye
* https://www.zoomeye.org/ *类似工具 IVRE 1. 摄像头漏洞 (1)http://www.2cto.com/Article/201401/269458.html (2) ...
- 洛谷 题解 P1353 【[USACO08JAN]跑步Running】
动态规划 状态 dp[i][j]表示第i分钟疲劳值为j的最大值 初始 全部都为一个最小值"0" 转移 考虑休息和走 如果当前疲劳值比时间要大,显然不可能出现这种情况 如果比时间小 ...
- 《Brennan's Guide to Inline Assembly》学习笔记
原文见Brennan's Guide to Inline Assembly. AT&T语法 vs Intel语法 DJGPP是基于GCC的,因此它使用AT&T/UNIT语法,这和Int ...
- Vue代码分割懒加载的实现方法
什么是懒加载 懒加载也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载 在单页应用中,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多 ...
- SQL SERVER 字符串函数 STRING_SPLIT()
定义: STRING_SPLIT()函数根据指定的分隔符将字符串拆分为子字符串行. ※STRING_SPLIT 要求兼容性级别至少为 130. (即SSMS 2016及以上版本) ※级别低于 130 ...
- PID程序实现
传统PID(位置式PID控制)调节: 这种算法的缺点是,由于全量输出,每次输出均与过去的状态有关,计算时要对 e(k) 进行累加,计算机运算工作量大.而且,因为计算机输出的 u(k) 对应的是执行机构 ...
- MySQL 按照日期格式查询带有时间戳数据
按照日期格式查询带有时间戳数据一般在MSQL数据库中的时间都是以时间戳的格式来存储时间的,但是对于我们来说,时间戳格式具体表示的是什么时间,我们很难一眼看出来,所以当我们要具体查询某一个时间或时间段的 ...