redis 之常用命令

Feb 24, 2016


set类型

  • SADD key member : 添加元素到set

      时间复杂度:O(N)
      功能:添加一个或多个指定的member元素到集合的 key中。指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.
      例:
          redis> SADD myset "Hello"
          (integer) 1
    
  • SCARD key: 获取set集合里面的元素数量

      时间复杂度:O(1)
      功能:返回集合存储的key的基数 (集合元素的数量).
      例:
      redis> SADD myset "Hello"
      (integer) 1
      redis> SADD myset "World"
      (integer) 1
      redis> SCARD myset
      (integer) 2
      redis> 
    
  • SPOP key: 删除并获取set集合的元素

      时间复杂度:O(1)
      功能:删除并获取set集合的元素
      例:
      redis> SADD myset "Hello"
      (integer) 1
      redis> SPOP myset
      "Hello"
    
  • SISMEMBER key member : 判断member是否是key中的元素

      时间复杂度:O(1)
      功能:如果member元素是集合key的成员,则返回1;如果member元素不是key的成员,或者集合key不存在,则返回0
      例:
      redis> SADD myset "one"
      (integer) 1
      redis> SISMEMBER myset "one"
      (integer) 1
      redis> SISMEMBER myset "two"
      (integer) 0
    
  • SMEMBERS key: 返回key中的所有元素

      时间复杂度:O(N)
      功能:返回key集合所有的元素.
      例:
      redis> SADD myset "Hello"
      (integer) 1
      redis> SADD myset "World"
      (integer) 1
      redis> SMEMBERS myset
      1) "World"
      2) "Hello" ---
    

list类型

  • LLEN key : 获得队列长度

      时间复杂度:O(1)
      功能:返回存储在 key 里的list的长度。 如果 key 不存在,那么就被看作是空list,并且返回长度为 0。 当存储在 key 里的值不是一个list的话,会返回error。
      例:
      redis> LPUSH mylist "World"
      (integer) 1
      redis> LPUSH mylist "Hello"
      (integer) 2
      redis> LLEN mylist
      (integer) 2
    
  • LPUSH key value : 从队列的左边入队一个或多个元素(RPUSH为从右边,即队列尾部插入)

      时间复杂度:O(1)
      功能:将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。 可以使用一个命令把多个元素 push 进入列表,只需在命令末尾加上多个指定的参数。元素是从最左端的到最右端的、一个接一个被插入到 list 的头部。 所以对于这个命令例子 LPUSH mylist a b c,返回的列表是 c 为第一个元素, b 为第二个元素, a 为第三个元素。
      例:
      redis> LPUSH mylist "world"
      (integer) 1
      redis> LPUSH mylist "hello"
      (integer) 2
      redis> LRANGE mylist 0 -1
      1) "hello"
      2) "world"
    
  • LPOP key : 从队列的左边出队一个元素(RPOP为从队列右边,即队列尾部出队)

      时间复杂度:O(1)
      功能:移除并且返回 key 对应的 list 的第一个元素。
      例:
      redis> RPUSH mylist "one"
      (integer) 1
      redis> RPUSH mylist "two"
      (integer) 2
      redis> RPUSH mylist "three"
      (integer) 3
      redis> LPOP mylist
      "one"
      redis> LRANGE mylist 0 -1
      1) "two"
      2) "three"
    

Redis HyperLogLog

  • Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

  • Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。

  • 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

  • 因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

  • 什么是基数? 基数就是不重复元素的个数。比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

  • 常用命令:

      1.PFADD key element [element ...] 
      添加指定元素到 HyperLogLog 中。
        
      2.PFCOUNT key [key ...] 
      返回给定 HyperLogLog 的基数估算值。
        
      3.PFMERGE destkey sourcekey [sourcekey ...] 
      将多个 HyperLogLog 合并为一个 HyperLogLog
        
        
      实例:
      redis 127.0.0.1:6379> PFADD w3ckey "redis"
    
      1) (integer) 1
    
      redis 127.0.0.1:6379> PFADD w3ckey "mongodb"
    
      1) (integer) 1
    
      redis 127.0.0.1:6379> PFADD w3ckey "mysql"
    
      1) (integer) 1
    
      redis 127.0.0.1:6379> PFCOUNT w3ckey
    
      (integer) 3
    

其他常用命令

  • DEL key : 删除一个key

      时间复杂度:O(N) (N为key中的元素数量)
      功能:删除key 并返回被删除的keys的数量
      例:
      redis> SET key1 "Hello"
      OK
      redis> SET key2 "World"
      OK
      redis> DEL key1 key2 key3
      (integer) 2
    
  • KEYS pattern : 查找所有符合pattern模式的keys

      时间复杂度:O(N) (N为数据库里面key的数量。)
      功能:查找所有符合给定模式pattern(正则表达式)的 key 。例如,Redis在一个有1亿个key的数据库里面执行一次查询需要的时间是40毫秒 。
      例:
      redis> MSET one 1 two 2 three 3 four 4  
      OK
      redis> GET one
      1
      redis> GET two
      2
      redis> KEYS *o*
      1) "four"
      2) "one"
      3) "two"
      redis> KEYS t??
      1) "two"
      redis> KEYS *
      1) "four"
      2) "three"
      3) "one"
      4) "two"
    
  • 获取服务器版本号:

      在服务器redis目录运行:
      redis-cli info|grep "redis_version"
        
      登录不上服务器可以在本地redis目录:
      redis-cli -h (加上服务器地址,如192.168.1.200) info|grep "redis_version"
        
      要获取服务器的完整信息:
      redis-cli -h (加上服务器地址,如192.168.1.200) info
    

参考文章:redis官网