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官网