Redis 最常用的两个程序 redis-server 和 redis-cli ,其中 redis-server 是 Redis 的服务器,启动 Redis 即运行 redis-server ; 而redis-cli自带的 Redis 命令行客户端,是学习 Redis 的重要工具。  

Redis 是一个键值对数据库 ,数据类型有五种:字符串、散列表、列表、集合、有序集合。

字符串:一个字符串类型允许存储的数据最大容量512MB,可以存储任何形式的字符串,包括二进制数据。

--赋值
set key value

--取值
get key

--递增数字 (当要操作的键不存在时,默认键值为0,所以第一次递增后的结果是 1)
--当键值不是整数时,Redis会提示错误
incr num

--增加指定的整数 例:incrby bar 2
incrby key increment

--decr decrby 与incr incrby命令用法一致,只是让键值递减
--递减数字
decr key
--递减指定数字
decrby key decrement

--增加浮点数
incrbyfloat key increment

--向键值的末尾追加value
append key value

--获取字符串的长度
strlen key

--同时获得/设置多个键
mget key1 key2 key3 ...
mset key1 value2 key2 value2 ...

--位操作

--获取键值指定位置的二进制位
getbit key offset

--设置键值指定位置的二进制位
setbit key offset value

--获取字符串类型键值中值为1的二进制位个数  参数start、end限制统计的范围  
--例:字符串 key“aar” bitcount key 0 1 统计的是“aa”
bitcount key [start] [end]

--对字符串类型键进行位运算,并将结果存储到参数指定的键中。
--bitop支持的运算操作:and、or、xor、not
bitop operation destkey key [key ...]

散列类型:一个散列类型键可以包含至多 2^32-1 个字段,散列类型不能嵌套其他的数据类型。

--赋值与取值

--(单个)注:hset返回0表示更新,返回1表示插入
hset key field value
hget key field

--(多个)
hmset key field1 value1 field2 value2 ...
hget key field1 field2 ...

--获取所有字段所有值
hgetall key

--判断字段是否存在:存在返回1,不存在返回0
hexist key field

--当字段不存在时赋值:与hset命令类似,区别在于此命令如果字段已经存在,不执行任何操作
hsetnx key field value

--增加指定整数,散列类型没有hincr
hincrby key field increment

--删除字段(可以删除一个或者多个,返回值是被删除的字段个数)
hdel key field1 field2 ...

--只获取字段名
hkeys key

--只获取字段值
hvals key

--获取字段数量
hlen key

列表类型:一个列表类型键可以包含至多 2^32-1 个元素,列表类型不能嵌套其他数据类型,只能存储字符串。列表类型内部实现为双向链表。

--向列表左端增加元素(可以添加多个),返回值为增加元素后列表的长度
Lpush key value [value ...]

--向列表右端增加元素,用法与lpush一样
rpush key value [value ...]

--从列表两端弹出元素
--从左
lpop
--从右
rpop

--获取列表中元素的个数
llen key

--获取列表片段(包含两端),命令支持负的索引,表示从右边开始计算序数(-1表示右边第一个元素)
lrange key start stop

--删除列表中前count个值为value的元素,返回值是实际删除的元素个数
--count大于0,命令从左边开始删除
--count小于0,命令从右边开始删除
--count等于0,会删除所有值为value的元素
lrem key count value

--获取指定索引的元素值(如果index是负数则表示从右边开始计算索引,最右边元素的索引是-1)
lindex key index

--设置指定索引的元素值
lset key index value

--只保存列表指定片段(删除指定索引范围之外的所有元素) ,指定列表的范围方法与lrange命令相同。
ltrim key start end

--向列表中加入元素(命令先从左到右查找值为pivot的元素,然后根据第二参数是before还是after来决value插入到该元素的前面还

是后面;返回值是插入该元素之后列表的元素的个数)
linsert key before|after pivot value

--将元素从一个列表转到另一个列表
rpoplpush source destination

集合类型:一个集合类型键可以存储2^32-1个字符串,集合中每个元素都是不同的,且没有顺序。集合类型在Redis内部是使用值为空的散列表实现的。

--增加元素(返回值为成功加入的元素数量)
sadd key member [member ...]

--删除元素
srem key member [member ...]

--获取集合中的所有元素
smembers key

--判断元素是否在集合中(存在返回1;值不存在返回0)
sismember key member

--计算差集
sdiff key [key ...]

--计算交集
sinter key [key ...]

--计算并集
sunion key [key ...]

--获取集合中元素个数
scard key

--进行集合运算并将结果进行存储
sdiffstore destination key [key ...]

sinterstore destination key [key ...]

sunionstore destination key [key ...]

--随机获得集合中的元素
--命令加上参数count 可以随机获取多个元素
--(1)当count为正数,随机从集合中获得count个不重复的元素。
--(2)当count为负数,随机从集合中获得|count|个元素,这些元素有可能会相同。
srandmember key [count]

--从集合中随机弹出一个元素
spop key

有序集合:有序集合与集合的区别就是“有序”二字,有序集合是使用散列表和跳跃表实现的,所以即使读取中间部分的数据熟读也很快;有序集合比列表类型更消耗内存,有序集合可以算的上是Redis的5种数据类型中最高级的类型了。

--增加元素
--zadd命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原来的分数。
--返回值是新加入到集合中的元素个数(不包含之前已经存在的元素)

--获得元素的分数
zscore key member

--获得排名在某个范围(索引)的元素列表
--按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端),索引从0开始,负数表示从后向前找(-1表示

最后一个元素)
--如果需要同时获得元素的分数,可以在命令的尾部加上withscores
zrange key start stop [withscores]

--zrevrange命令和zrange的唯一不同在于zrevrange命令是按照分数从大到小的顺序给出结果
zrevrange key start stop [withscores]

--获取指定分数范围的元素
--按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素;
--如果希望分数范围不包含端点值,可以在分数前加上“(”
--[limit offset count]类似于mysql的分页
zrangebyscore key min max [withscores] [limit offset count]

--与上一命令用法一致,按照分数从大到小返回
zrevrangebyscore key max min [withscores] [limit offset count]

--增加某个元素的分数(返回值为更改后的分数)
zincrby key increment member

--获取集合中元素的数量
zcard key

--获取指定分数范围内的元素个数(min、max支持“(”,表示不包含)
zcount key min max

--删除一个或者多个元素(返回值为成功删除的元素数量)
zrem key member [member]

--按照排名范围删除元素
--按照元素分数从小到大的顺序(索引0表示最小值)删除指定排名范围内的所有元素,返回删除的元素数量
--start stop 表示索引
zremrangebyrank key start stop

--按照分数范围删除元素 (min、max支持“(”,表示不包含)
zremrangebyscore key min max

--获取元素分数从小到大的顺序 指定元素的排名
zrank key member

--获取元素分数从大到小的顺序 指定元素的排名
zrevrank key member

--计算有序集合的交集
--计算多个有序集合的交集并将结果存储在destination键中,返回值为destination键中的元素个数。
--destination键中元素的分数是由aggregate参数决定的
--(1)当aggregate是sum(默认值),destination键中元素的分数就是每个参与计算的集合中改元素的分数和;
--(2)当aggregate是min,destination键中元素的分数就是每个参与计算的集合中该元素分数的最小值;
--(3)当aggregate是max,destination键中元素的分数就是每个参与计算的集合中该元素分数的最大值;
--命令可以通过weights参数设置每个集合的权重,每个集合在参与计算时就会被乘上该集合的权重。
zinterstore destination numkeys key [key ...] [weights weight [weight]] [aggregate sum|min|max]

--用法与zinterstore用法一致
zunionstore destination numkeys key [key ...] [weights weight [weight]] [aggregate sum|min|max]