一、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
1.2 hash 下几个常用方法

删除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
2.2 往列表中插入元素,删除元素等
  • 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"
2.3 几个不常用的命令,但很厉害

把列表一右边pop 添加到列表2 lpush 左边

  • rpoplpush key1 key2

左边删除一个数据,如果列表为空,就等待超时时间,在超时时间内,列表中出现了元素理解删除。像队列中的queue一般

  • blpop key timeout
三、set集合

创建一个集合:

  • 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、列表、集合操作的更多相关文章

  1. 6、Redis中对Hash类型的操作命令

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- ------------ ...

  2. Redis中关于Hash键的一些问题

    Hash键存在的意义: 1.Hash键可以将信息凝聚在一起,而不是直接分散的存储在整个Redis中,这不仅方便了数据管理,还可以尽量避免一定的误操作: 2.避免键名冲突: 3.减少内存占用.(最重要的 ...

  3. Redis中的键值过期操作

    1.过期设置 Redis 中设置过期时间主要通过以下四种方式: expire key seconds:设置 key 在 n 秒后过期: pexpire key milliseconds:设置 key ...

  4. Redis中的事务(多命令)操作

    作为一个nosql数据库,事务是必要功能.但是redis我们是可以理解为它不支持事务操作的,因为它的特征完全不满足我们对事物的正常理解 ps:我不知道是谁一开始提出redis支持事务的,但是我更倾向于 ...

  5. 快速整透Redis中的压缩列表到底是个啥

    压缩列表简介 压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构.一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值.它是Redis为了节省内存空间而开发的. 压缩列 ...

  6. redis 的使用 ( list列表类型操作)

    list 数据类型 列表类型 list 类型是一个双向操作 从链表的头部或者尾部添加删除元素 list 既可以用作栈 也可以用作队列 list 链表的类型应用场合: 获取最新的 10 个用户的信息 s ...

  7. Scala中的数组和集合操作

    package test /* 1.在scala集合中,Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如元素的遍历 * 2.Array是scala基础的数据结构, ...

  8. Redis中的key的通用操作

    1.看看所有的key 2.查看以mys开头的key 3.是否存在 4.删除 5.重命名. 6.设置过期时间与所剩的时间 如果没有设置,返回-1. 7.返回类型

  9. Springboot与ActiveMQ、Solr、Redis中分布式事物的初步探索

    Springboot与ActiveMQ.Solr.Redis中分布式事物的初步探索 解决的场景:事物中的异步问题,当要求数据库与solr服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功 ...

随机推荐

  1. c/c++ 标准库 pair 介绍

    标准库 pair 介绍 问题:map里的元素由key和value组成,这个key和value的组合是什么类型呢??? 答案:pair类型 pair介绍: 它是模板 有2个公有成员可供访问. first ...

  2. Ubuntu下永久修改主机名和创建用户

    使用hostname 进行修改. 创建用户,修改密码

  3. JS 代码中到底加不加分号

    背景 在写自动执行函数时 vm.$watch('datas', function() { console.log(vm.datas); }) (function () { console.log('t ...

  4. Python爬虫-05:Ajax加载的动态页面内容

    1. 获取AJAX加载动态页面的内容 1.1. Introduction 如果所爬取的网址是通过Ajax方式加载的,就直接抓包,拿他后面传输数据的文件 有些网页内容使用AJAX加载,只要记得,AJAX ...

  5. java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)

    1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...

  6. 正在学习的Java大学教程

    推荐本书<Java大学教程> 看的人比较少,我也是多年不看书了,基于教程一般选国外的方法,从图书馆选了本书. 看了一半,感觉书的内容比较认真,对于基本的Java知识都算介绍全了,而且全书是 ...

  7. n2

    "express-ws": "^3.0.0", "devDependencies": {    "socket.io": ...

  8. 如何学习Linux性能优化?

    如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但 ...

  9. UVA690-Pipeline Scheduling(dfs+二进制压缩状态)

    Problem UVA690-Pipeline Scheduling Accept:142  Submit:1905 Time Limit: 3000 mSec  Problem Descriptio ...

  10. CSAPP:第八章 异常控制流1

    CSAPP:第八章 异常控制流1 关键点:异常 8.1 异常8.2 进程   现代系统通过使控制流发生突变来对这些情况做出反应,一般而言,我们把这些突变称为异常控制流(Exceptional Cont ...