redis中的hash、列表、集合操作
数据结构:key:{k1:v1, k2:v2, k3:v3} 类似Python中的字典
如:info : {name: lina, age: 22, sex: F}
- hset key k1 v1 设置/创建(字典)
- hget key k1 获取key1 中 k1对应的值
批量设置获取
- hmset key k2 v2 k3 v3 同时设置多个k-value
- hmget key k1 k2 k3 同时获取多个值
获取所有keys
- hkeys key
获取所有values
- hvals key
查看键值下面的k个数
- hlen key
127.0.0.1:6379> hset info name lina
(integer) 1
127.0.0.1:6379> hget info name
"lina"
127.0.0.1:6379> hmset info age 22 sex F
OK
127.0.0.1:6379> hmget info name age sex
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> hvals info
1) "lina"
2) "22"
3) "F"
127.0.0.1:6379> hlen info
(integer) 3
删除key 下指定键值
- hdel key k1 k2 k3 可删除一个或多个
判断key 下指定键值是否存在
- hexists key field
127.0.0.1:6379> hdel info sex
(integer) 1
127.0.0.1:6379> hexists info sex
(integer) 0
在hash操作中一个key 能存200亿条数据,如果使用 hmget key 命令,那占用内存,和速度就太慢了
所以使用扫描,类是python 中生成器一样的方式:
- hscan key cursor match pattern COUNT count
:para key: 那个hash
:para cursor: 游标,从哪开始扫描 一般从 0
:para match: pattern 模糊匹配,正则表达
:para COUNT: count匹配几个,输入数字就好
127.0.0.1:6379> hscan info 0 match na* count 1
1) "0"
2) 1) "name"
2) "lina"
- lpush key value1 value2 value3 创建一个列表,并从左往右依次放入数据(FILO)
- rpush key value value2 同理上面,右往左放入(FIFO)
- lrange key start stop 取列表中的值,从start 到stop 0 -1为取全部
- llen key 查看列表长度
127.0.0.1:6379> lpush list 1 2 3
(integer) 3
127.0.0.1:6379> rpush list 1 2 3
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> llen list
(integer) 6
- linsert key where refvalue value 往key中对应的refvalue标杆值的 where(before 和 after)前后后两个选项,插入数据value
:para key: 对应列表
:para where: before 或 after 意思在标杆值之前或之后
:para refvale: 标杆值
:para value: 将要插入的值
注意:如果有重复值,以找到的第一个为标杆
(integer) 6
127.0.0.1:6379> linsert list before 1 insert
(integer) 7
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
修改指定索引的值:
- lset key index value
删除指定位置的值:
- lrem key count value 参数count 为删除几个,value为 删谁
从列表左边获取一个值返回,并删除它
- lpop key
获取指定索引的值
- lindex key index
删除指定范围之外的所有元素
- ltrim key start end
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "insert"
4) "1"
5) "1"
6) "2"
7) "3"
127.0.0.1:6379> lset list 1 'lina'
OK
127.0.0.1:6379> lrem list 2 1
(integer) 2
127.0.0.1:6379> lpop list
"3"
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
3) "2"
4) "3"
127.0.0.1:6379> ltrim list 0 1
OK
127.0.0.1:6379> lrange list 0 -1
1) "lina"
2) "insert"
127.0.0.1:6379> lindex list 1
"insert"
把列表一右边pop 添加到列表2 lpush 左边
- rpoplpush key1 key2
左边删除一个数据,如果列表为空,就等待超时时间,在超时时间内,列表中出现了元素理解删除。像队列中的queue一般
- blpop key timeout
创建一个集合:
- sadd key value value value value
查看集合中的成员:
- smembers key
返回集合中的元素个数:
- scard key
差集:
- sdiff key1 key2
将两个集合中的差集放入第三个集合
- sdiffstore new_dest key1 key2
交集:
- sinter key1 key2
并集:
- sunion key1 key2
检查元素是否为集合中成员:
sismember key value
spop key
sscan key cursor match pattern
zadd key 权重值 member 权重值2 member2 权重值3 member3
zrange key start end 可选参数为 withscores
zcount key min max 统计权重最小到最大
127.0.0.1:6379> zadd zz 1 shiqi 2 zengyue 3 yuan
(integer) 3
127.0.0.1:6379> zrange zz 0 -1
1) "shiqi"
2) "zengyue"
3) "yuan"
127.0.0.1:6379> zrange zz 0 -1 withscores
1) "shiqi"
2) "1"
3) "zengyue"
4) "2"
5) "yuan"
127.0.0.1:6379> zcount zz 1 2
(integer) 2
zrank key member 获取成员排名
zrem key member member2 删除指定成员
redis中的hash、列表、集合操作的更多相关文章
- 6、Redis中对Hash类型的操作命令
写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...
- Redis中关于Hash键的一些问题
Hash键存在的意义: 1.Hash键可以将信息凝聚在一起,而不是直接分散的存储在整个Redis中,这不仅方便了数据管理,还可以尽量避免一定的误操作: 2.避免键名冲突: 3.减少内存占用.(最重要的 ...
- Redis中的键值过期操作
1.过期设置 Redis 中设置过期时间主要通过以下四种方式: expire key seconds:设置 key 在 n 秒后过期: pexpire key milliseconds:设置 key ...
- Redis中的事务(多命令)操作
作为一个nosql数据库,事务是必要功能.但是redis我们是可以理解为它不支持事务操作的,因为它的特征完全不满足我们对事物的正常理解 ps:我不知道是谁一开始提出redis支持事务的,但是我更倾向于 ...
- 快速整透Redis中的压缩列表到底是个啥
压缩列表简介 压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构.一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值.它是Redis为了节省内存空间而开发的. 压缩列 ...
- redis 的使用 ( list列表类型操作)
list 数据类型 列表类型 list 类型是一个双向操作 从链表的头部或者尾部添加删除元素 list 既可以用作栈 也可以用作队列 list 链表的类型应用场合: 获取最新的 10 个用户的信息 s ...
- Scala中的数组和集合操作
package test /* 1.在scala集合中,Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如元素的遍历 * 2.Array是scala基础的数据结构, ...
- Redis中的key的通用操作
1.看看所有的key 2.查看以mys开头的key 3.是否存在 4.删除 5.重命名. 6.设置过期时间与所剩的时间 如果没有设置,返回-1. 7.返回类型
- Springboot与ActiveMQ、Solr、Redis中分布式事物的初步探索
Springboot与ActiveMQ.Solr.Redis中分布式事物的初步探索 解决的场景:事物中的异步问题,当要求数据库与solr服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功 ...
随机推荐
- Docker详细介绍安装与镜像制作和拉取
一.Docker是什么? 产生背景: 开发和运维之间因为环境不同和导致的矛盾(不同的操作系统.软件环境.应用配置等)DevOps 代码.系统.环境.配置等封装成镜像Image--->运维: 集群 ...
- 4.8Python数据处理篇之Matplotlib系列(八)---Figure的学习
目录 目录 前言 (一)figure()方法的定义 (二)figure()方法的参数 (三)figure()方法的例子 1.多窗体绘图: 2.窗口得分别率 目录 前言 今天我们来学习一下plt.fig ...
- February 21st, 2018 Week 8th Wednesday
Our life is what our thoughts make it. 我们的思想成就了我们的生活. The mind is everything. What you think, you be ...
- python3编写网络爬虫21-scrapy框架的使用
一.scrapy框架的使用 前面我们讲了pyspider 它可以快速的完成爬虫的编写 不过pyspider也有一些缺点 例如可配置化不高 异常处理能力有限对于一些反爬虫程度非常强的网站 爬取显得力不从 ...
- node基础—模块系统
模块的概念 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块加载系统. 在 Node.js 中,文件和模块是一一对应的(每个文件被视为一个独立的模块),换言之,一个 Node ...
- Qt编译错误GL/gl.h: No such file or directory
近期把系统换成ubuntu14.04的了.在安装Qt后,我执行了里面的一个演示样例,发现编译有错: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- Python 属性与方法 概念理解
属性与方法 attribute(属性)是class(类)中的成员变量,而method(方法)则是class(类)中的function(函数). 也可以理解,属性就类变量,方法就是类函数. 类中的变量就 ...
- ogg BR – BOUNDED RECOVERY 测试案例
首先,我们来看两个OGG同步中可能的问题: l oracle在线日志包含已提交的和未提交的事务,但OGG只会将已提交的事务写入到队列文件.因此,针对未提交的事务,特别是未提交的长事务,OGG会怎样处理 ...
- Eclipse下关于The serializable class UsersServlet does not declare a static final serialVersionUID field of type的警告
The serializable class XXX does not declare a static final serialVersionUID field of type long seria ...
- pycharm2018.3版 永久激活
pycharm2018.3版 永久激活 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10258257.html 激活前准备工作 ...