1、字符串命令
get 获取存储在给定键中的值
set 设置存储在给定键中的值
del 删除存储在给定键中的值(这个命令可以用于所有类型)
incr incr key-name 将键存储的值加上1
decr decr key-name 将键存储的值减去1
incrby incrby key-name amount 将键存储的值加上整数amount
decrby decrby key-name amount 将键存储的值减去整数amount
incrbyfloat incrbyfloat key-name amount 将键存储的值加上浮点数amount,redis2.6或以上版本可用
竟然没有decrbyfloat?不好实现??
如果用户对一个不存在的键或者一个保存了空串的键执行自增或自减操作,那么redis在执行操作时会将键的值当作是0来处理。如果用户尝试对一个无法解释为整数或者浮点数的字符串执行自增或者自减操作,那么redis将返回一个错误。
# 还有这些操作
append append key-name value
getrange getrange key-name start end
setrange setrange key-name offset value
getbit getbit key-name offset
setbit setbit key-name offset value
bitcount bitcount key-name [start end]
bitop
在使用setrange
、setbit
命令对字符串操作时,如果字符串长度不能满足写入的要求,redis会自动使用空字节(null)来将字符串扩展到所需长度。使用getrange
读取字符串时,超出部分视为空串,getbit
读取二进制位时,超出部分是为0。
2、redis中的列表
列表中的元素是可以重复的
LPUSH和RPUSH LPUSH/RPUSH key-name value [value ...] 将给定值推入列表的左端(右端)
LPOP和RPOP LPOP/RPOP key-name 从列表的左端(右端)弹出元素
LRANGE LRANGE key-name start end 获取列表在给定范围上的所有元素,包括start和end
LINDEX LINDEX key-name offset 获取列表在给定位置上的一个元素
LTRIM LTRIM key-name start end 只保留从start偏移量到end偏移量范围内的元素,包括start和end
阻塞式的列表弹出命令以及在列表之间移动元素的命令
# 还有这些操作
blpop blpop key-name [key-name ...] timeout
brpop brpop key-name [key-name ...] timeout
rpoplpush rpoplpush source-key desc-key timeout
brpoplpush brpoplpush source-key desc-key timeout
3、redis的散列
redis的散列可以存储多个键值对之间的映射。和字符串一样,散列存储的值既可以是字符串也可以是数字值,用户可以对散列存储的数字值执行自增或自减操作。
hset 在散列里面关联起给定的键值对
hget 获取指定散列键的值
hgetall 获取散列包含的所有键值对
hdel 如果给定键存在于散列里面,那么移除这个键
4、redis的集合
redis的集合和列表都可以存储多个字符串,它们的区别在于,列表可以存储多个相同的字符串,而集合则通过使用散列来保证自己存储的每个字符串是不同的(这些散列表只有键,但没有和键相关联的值)。
sadd sadd key-name item [item ...] 将给定元素添加到集合
srem srem key-name item [item ...] 如果给定的元素存在于集合中,那么移出这个元素
sismember sismember key-name item 检查给定元素是否存在于集合中
smembers smembers key-name 返回集合中包含的所有元素(如果集合中有很多元素,那么这个命令执行会很慢)
scard scard key-name 返回集合中包含的元素数量
srandmember srandmember key-name [count] 从集合中随机返回一个或多个元素,当count为正数时,返回的随机元素不会重复;当count为负数时,返回的随机元素可能会重复,卧槽-_-##,这操作666。
spop spop key-name 随机移除集合中一个元素,返回移除的元素。
smove smove source-key dest-key name 如果source-key包含元素item,那么从集合source-key里面移除元素item,并将元素item添加到集合dest-key中;如果item被成功移除,那么命令返回1,否则返回0。
用于组合和处理多个集合的redis命令
# 还有这些操作
sdiff sdiff key-name [key-name ...]
sinter sinter key-name [key-name ...]
sunion sunion key-name [key-name ...]
sdiffstore sdiffstore dest-key key-name [key-name ...]
sinterstore sinterstore dest-key key-name [key-name ...]
sunionstore sunionstore dest-key key-name [key-name ...]
5、redis的有序集合
有序集合和散列一样,都用于存储键值对:有序集合的键被称为成员(member),每个键都是各不相同;而有序集合的值被称为分值(score),分支必须为浮点数。有序集合是redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值及分值的排列顺序来访问元素的结构。
zadd 将一个带有给定分值的成员添加到有序集合里
zrange 根据元素在有序排列中所处的位置,从有序集合里获取多个元素
zrangescore 获取有序集合在给定分值范围内的所有元素
zrem 如果给定成员存在于有序集合,那么移除该成员
zinterstore 可以组合一个过多个有序集合,并将有序集合包含的分值都乘以一个给定数
6、redis基本事务
redis有五个命令可以让用户在不被打断的情况下对多个键执行操作,它们分别是watch、multi、exec、unwatch、discard。
7、键的过期时间
expire expire key-name seconds 让给定的键在指定秒数之后过期
expireat expireat key-name timestamp 给指定的键设置在给定的unix时间戳过期
pexpireat pexpireat key-name timestamp-milliseconds 将一个毫秒级精度的unix时间戳设置为给定键的过期时间,redis2.6或以上可用。
ttl ttl key-name 查看给定键距离过期时间还有多少秒
pttl pttl key-name 查看给定键距离过期时间还有多少毫秒
persist persist key-name 移除键的过期时间