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服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功 ...
随机推荐
- iOS application/json上传文件等
在和sever后台交互的过程中.有时候.他们需要我们iOS开发者以“application/json”形式上传. NSString *accessUrl = [NSString stringWithF ...
- 代码管理工具:Git 和 Svn 的简单操作
1. git 先注册git config --global user.name "name" git config --global user.email "email& ...
- docker 私有仓库简易搭建
概要 本地私有仓库 局域网私有仓库 总结 概要 docker hub 使用非常方便,而且上面有大量的镜像可以使用. 但是,每次都远程下载镜像速度非常慢,如果能在本地做一个 docker 的仓库,多人协 ...
- python3编写网络爬虫22-爬取知乎用户信息
思路 选定起始人 选一个关注数或者粉丝数多的大V作为爬虫起始点 获取粉丝和关注列表 通过知乎接口获得该大V的粉丝列表和关注列表 获取列表用户信息 获取列表每个用户的详细信息 获取每个用户的粉丝和关注 ...
- node 打开浏览器
npm install --save opn const opn = require('opn'); // 使用默认浏览器打开 // opn('http://sindresorhus.com'); / ...
- 前端性能优化成神之路-HTTP压缩开启gzip
什么是HTTP压缩 HTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法. HTTP采用通用的压缩算法,比如gzip来压缩HTML,Javascript, CSS文件. 能大大减少 ...
- docker学习笔记(三)-通过network理解docker,在同一网桥里搭建docker容器
创建test1 test2 两个network namespace 两个network namespace没有被启动 启动了但是有没有与network关联 创建两个veth,用于关联两个network ...
- LDAP概念
1.1.LDAP目录结构 此图为树形目录结构,我将此跳过去了,因为这个是按照“国家这种结构来划分的”.如果你喜欢这样看更好,如下还有一种: 树也可以根据互联网域名组主.这种命名方式正越来越受欢迎, ...
- IOS解析XML文件
这里使用NSXMLParser来解析,这个是apple自带的xml解析库,有个參考文章:http://www.raywenderlich.com/553/xml-tutorial-for-ios-ho ...
- wait和notify
① wait() 与 notify/notifyAll 方法必须在同步代码块中使用 synchronized修饰的同步代码块或方法里面调用wait() 与 notify/notifyAll()方法 ...