Redis教程

Redis(三)

本文主要是介绍Redis(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

6.Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

  1. 创建一个List列表,并向其左边添加一个值,也可以添加多个值

    lpush list one
    lpush list one two three
    
  2. 创建一个List列表,并向其右边添加一个值,或者多个值

    rpush list test1 test2 test3
    
  3. 查看一个List列表的内容

    lrange list 0 -1 #第一个是起始位置,从0开始,第二个是结束位置-1表示最后面
    

  4. 移出元素,既可以从左边移出,也可以从右边移出,不仅仅可以移出一个,也可以移出多个

    lpop list #移出左边一个元素
    rpop list #移出右边一个元素
    lpop list 2 #移出左边两个元素
    rpop list 4 #移出右边四个元素
    

  5. 查看List的长度

    llen list
    
  6. 返回指定索引位置的value

    lindex list 1#返回索引为1位置的value
    
  7. 从列表中删除指定元素,可以指定次数

    lrem list 1 one #从列表中移出值为one的元素1次
    lrem list 3 one #从列表中移出值为one的元素3次
    

  8. 修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。

    ltrim list 1 3#修剪一个list,只包含从索引为1到索引为3位置的元素
    
  9. 原子性地返回并移除存储在 source 的列表的最后一个元素(列表尾部元素), 并把该元素放入存储在 destination 的列表的第一个元素位置(列表头部)。

    rpoplpush list1 list2#从list1列表中移出最后一个元素,并添加到list2的第一个位置
    
  10. 设置 index 位置的list元素的值为 value。当index超出范围时会返回一个error。

    lset list 1 test#将list索引为1位置的值更新为test
    

  11. 把 value 插入存于 key 的列表中在基准值 pivot 的前面或后面。当 key 不存在时,这个list会被看作是空list,任何操作都不会发生。当 key 存在,但保存的不是一个list的时候,会返回error。

    linsert list before one test1#在list中one的前面插入一个test1
    

  12. 将值 value 插入到列表 key 的表尾, 当且仅当 key 存在并且是一个列表。 和 RPUSH命令相反, 当 key 不存在时,RPUSHX 命令什么也不做。

    rpushx mylist world#在mylist最后插入一个world,只有当mylist存在的时候才会插入,不存在的时候不会做什么事情
    

7.Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

集合对象的编码可以是 intset 或者 hashtable。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

  1. 添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.如果key 的类型不是集合则返回错误.

    sadd myset hello#添加一个hello到myset集合中
    
  2. 返回集合存储的key的基数 (集合元素的数量)

    scard myset#获取myset中元素个数
    
  3. 返回key集合所有的元素.

    smemebrs myset#查看myset集合元素
    

  4. 在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0.

    srem myset "one"#在myset集合中移出one
    
  5. 从存储在key的集合中移除并返回一个或多个随机元素。

    spop myset#从myset集合中随机移出一个元素
    spop myset 2 #从myset集合中随机移出2个元素
    
  6. 仅提供key参数,那么随机返回key集合中的一个元素。Redis 2.6开始,可以接受 count 参数,如果count是整数且小于元素的个数,返回含有 count 个不同的元素的数组,如果count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素,当count是负数,则会返回一个包含count的绝对值的个数元素的数组,如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况.仅提供key参数时,该命令作用类似于SPOP命令,不同的是SPOP命令会将被选择的随机元素从集合中移除,而SRANDMEMBER仅仅是返回该随记元素,而不做任何操作.

    srandmember myset #随机从myset集合中返回一个元素
    srandmember myset 2#随机从myset集合中返回2个元素
    

  7. 将member从source集合移动到destination集合中

    smove myset myset1 two
    

  8. 返回一个集合与给定集合的差集的元素.

    sdiff set1 set2 #返回set1和set2差集
    
  9. 返回指定所有的集合的成员的交集.

    sinter set1 set2 #返回set1和set2交集
    
  10. 返回给定的多个集合的并集中的所有成员

    sunion set1 set2 #返回set1和set2并集
    

8.Redis 哈希(Hash)

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

  1. 设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写。

    hset myhash field1 "hello"#设置哈希集合myhash添加一个键值对,值为hello
    
  2. 返回hash里面field是否存在,返回1存在字段,返回0不存在字段

    hexists myhash field1#myhash中是否存在field1
    
  3. 返回 key 指定的哈希集中该字段所关联的值

    hget myhash field1#返回集合中字段field1的值
    
  4. 返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍。

    hgetall myhash #返回集合myhash所有键值对
    

  5. 返回 key 指定的哈希集包含的字段的数量。

    hlen myhash#返回myhash包含字段个数
    
  6. 设置 key 指定的哈希集中指定字段的值。该命令将重写所有在哈希集中存在的字段。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。

    hmset myhash filed1 val1 field2 val2#给myhash设置两个字段field1,field2
    
  7. 返回 key 指定的哈希集中指定字段的值。对于哈希集中不存在的每个字段,返回 nil 值。

    hmget myhash field1 field2#返回myhash中字段field1,field2的值
    
  8. 从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。

    hdel myhash field1#从集合中移出field1
    

  9. 增加 key 指定的哈希集中指定字段的数值。如果 key 不存在,会创建一个新的哈希集并与 key 关联。如果字段不存在,则字段的值在该操作执行前被设置为 0。

    hincrby myhash field4 5#将field4字段加5
    
  10. 只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段已存在,该操作无效果。

    hsetnx myhash field5 test5#如果myhash存在field4属性就忽略,不存在就设置
    
  11. 返回hash指定field的value的字符串长度,如果hash或者field不存在,返回0。

    hstrlen myhash field5#返回字段field5字符串长度
    
  12. 返回 key 指定的哈希集中所有字段的名字。

    hkeys myhash#返回所有的key
    
  13. 返回 key 指定的哈希集中所有字段的值。

    hvals myhash#返回所有values集合
    

这篇关于Redis(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!