Redis数据类型的相关操作

最近学习了下Redis,在网上搜集整理了一些Redis操作的相关命令,整理如下:

1. key-value

   
   1.1普通复制
   set mykey myValue --存在即覆盖
   get myKey
   del myKey
   
   1.2 数字自增
   set num++ 100
   incr num++ --执行后为101
   incrby num++ 50 --执行一次加50


   1.3 批量复制
   mset key1 key1Value key2 key2Value
   mget key1 key2


   1.4 判断key是否存在, 存在返回1,否则返回0
   命令 结果
   exists key1    1
   exists key3    0


   1.5 判断存储类型
   type key1      --结果 string
   type num++     --结果 string


   1.6 设置数据失效时间(精度可以使用毫秒或秒)
1.6.1 设置失效时间
     set key3 key3Value
     expire key1 5

1.6.2 取消失效时间设置
     persist key1

1.6.3 赋值的同时设置试下时间
     set key3 key3Value ex 10 --设置key3的值为10秒
     ttl key3                 --查看key3的剩余失效时间


2. list集合(Redis Lists用linked list实现)
   2.1 简介
    一般意义上讲,列表就是有序元素的序列:10,20,1,2,3就是一个列表。但用数组实现的List和用Linked List实现的List,在属性方面大不相同。
Redis lists基于Linked Lists实现。这意味着即使在一个list中有数百万个元素,在头部或尾部添加一个元素的操作,其时间复杂度也是常数级别的。用LPUSH 命令在十个元素的list头部添加新元素,和在千万元素list头部添加新元素的速度相同。
那么,坏消息是什么?在数组实现的list中利用索引访问元素的速度极快,而同样的操作在linked list实现的list上没有那么快。
Redis Lists用linked list实现的原因是:对于数据库系统来说,至关重要的特性是:能非常快的在很大的列表上添加元素。另一个重要因素是,正如你将要看到的:Redis lists能在常数时间取得常数长度。
如果快速访问集合元素很重要,建议使用可排序集合(sorted sets)。
   2.2 添加元素
        2.2.1 单个添加
    lpush myList 1 --左边头部添加
    rpush myList 2 --右边尾部添加


        2.2.2 批量添加
    rpush myList 1 2 3 4


   2.3 集合元素查看
        lrange 带有两个索引,一定范围的第一个和最后一个元素。这两个索引都可以为负来告知Redis从尾部开始计数,因此-1表示最后一个元素,-2表示list中的倒数第二个元素,以此类推。
        lrange mylist 0 -1  --0表示开始位置所以,-1表示最后一个位置索引
   
   2.4 队列实现(它从list中删除元素并同时返回删除的值,当myList为空时,返回NULL)
lpop myList  -- 左边开始位置弹出,并删除
rpop myList  -- 右边开始位置弹出,并删除
   
   2.5 应用场景
       2.5.1 聊天消息队列
       2.5.2 新闻列表
       2.5.3 评论列表


   2.6 List上的阻塞操作
   可以使用Redis来实现生产者和消费者模型,如使用LPUSH和RPOP来实现该功能。但会遇到这种情景:list是空,这时候消费者就需要轮询来获取数据,这样就会增加redis的访问压力、增加消费端的cpu时间,而很多访问都是无用的。为此redis提供了阻塞式访问 BRPOP 和 BLPOP 命令。 消费者可以在获取数据时指定如果数据不存在阻塞的时间,如果在时限内获得数据则立即返回,如果超时还没有数据则返回null, 0表示一直阻塞。
同时redis还会为所有阻塞的消费者以先后顺序排队
3. set集合
   3.1 增加(值重复,会覆盖,只保留唯一的值)
       sadd mySet setValue1 setValue2 setValue3
   
   3.2 查看
smembers mySet
   
   3.3 判断值是否存在(存在返回 1,不存在返回 0)
       sismember mySet setValue1
   
   3.4 返回set的元素个数,不存在返回 0
       scard mySet
   
   3.5 返回一个随机元素
       srandmember mySet
   
   3.6 删除一个随机元素,并返回该元素
       spop mySet


   3.7 删除一个或多个元素

       srem mySet setValue1


  原文链接:http://www.redis.cn/topics/data-types-intro.html#lists

你可能感兴趣的:(list,set,Redis命令)