redis常用命令

全局操作:
#查看所有key
keys *  或  keys "*"

#查看匹配前缀的keys
keys "miao*"

#清空redis
flushdb

#随机取出一个key
randomkey

#查看key的类型
type key

#查看数据库中key的数量
dbsize

#查看服务器信息
info

#查看redis正在做什么
monitor

#查看日志

slowlog get
slowlog get 10

1.redis是key-value存储的,放在内存中,并在磁盘持久化的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
通过set key value来存储,通过get key来获取值
#设置key的值,若存在则覆盖
set key value

#若存在则不操作
setnx key value

#设置这些key的值,若存在则覆盖
MSET key1 value1 key2 value2 ... keyN valueN

#同mset,但如果其中一个key已经存在了,则都不设置。这些操作都是原子的
MSETNX key1 value1 key2 value2 ... keyN valueN

#向key的字符串追加拼接。
append key value

#获取key对应的值
get key

#获取这些key对应的值
MGET key1 key2 ... keyN

#查看是否存在该元素
EXISTS key

#获取该元素的值,并给该元素设置新值。(通常和incr搭配使用,比如一个mycount一直incr,然后达到某些情况需要清零,清零之前需要知道mycount的值)
GETSET key value

#删除元素
del key

#重命名
RENAME oldkey newkey

2.redis提供原子自增操作incr,用来防止多线程并发出现数据错误。
#原子的+1
incr key

#原子的-1
DECR key

#原子的-integer
DECRBY key integer

#原子的+integer
INCRBY key integer

3.删除操作:del.若数据不存在返回(nil)

4.redis可以定时存储,即设置几秒后删除该变量

#设置该元素多少秒后失效
EXPIRE key seconds

#设置该元素多少毫秒后失效
PEXPIRE key milliseconds

#查看还可以存活多少秒,-2表示key不存在,-1表示永久存储
TTL key

#等价于先设置变量再设置超时,即在缓存中使用:存储的同时设置超时时间,这个操作是原子的
SETEX key seconds value

#取消过期时间
persist key

#unix时间戳,1970.1.1之后,这个绝对时间,将在这个时间删除key。expireat pages:about 1356933600:在2012年12月31日上午12点删除掉关键字
expireat key 时间戳

#设置key的值为value,并在timeout秒后失效,key将被删除
SETEX KEY_NAME TIMEOUT VALUE

5.存储有序队列:list

#向keyList添加元素,向后加,r表示右边
rpush keyList value

#向keyList左边添加元素
lpush keyList value

#获取keyList的元素,用两端的索引取出子集,endIndex=-1则表示全部取出
lrange keyList beginIndex endIndex

#获取keyList的长度大小
llen keyList

#取出并移除keyList第一个元素,左边的元素
lpop keyList

#取出并移除keyList最后一个元素,右边的元素
rpop keyList

#获取该索引下的元素
LINDEX key index

#删除count个value(count为正数,从头开始,删除count个value元素;count为负,则从尾部向头删除|count|个value元素;count为0,则所有的元素为value的都删除)
lrem key count value

#设置索引为index下的元素为value.超出索引范围报错
LSET key index value

#清空索引在start 和end之外的元素,索引从0开始,两端保留,两端之外的清空
LTRIM key start end

#源队列srckey,目标队列dstkey,将srckey的最后一个移除,并放到dstkey的第一个
RPOPLPUSH srckey dstkey

6.无序且唯一集合set
和java中list与set的区别一样。这里的set无序且值唯一。

#向set添加元素
sadd key value

#从set中移除元素
srem key value

#取出所有set元素
smembers key

#查看value是否存在set中
SISMEMBER key value

#将所有key合并后取出来,相同的值只取一次
SUNION key1 key2 ... keyN

#获取set中元素的个数
scard key

#随机取出一个
SRANDMEMBER key

#获取第一set中不存在后面几个set里的元素
SDIFF key1 key2 ... keyN

#和sdiff相同,获取key1中不存在其他key里的元素,但要存储到dstkey中
SDIFFSTORE dstkey key1 key2 ... keyN

#取出这些set的交集
SINTER key1 key2 ... keyN

#取出这些key的交集并存储到dstkey
SINTERSTORE dstkey key1 key2 ... keyN

#将元素member从srckey中转移到dstkey中,这个操作是原子的
SMOVE srckey dstkey member

7.有序集合sorted set
和set一样,唯一。但多了个score用来排序。所以命令又像list一样

#向有序set中添加元素member,其中score为分数,默认升序
ZADD key score member

#获取按score从低到高索引范围内的元素,索引可以是负数,-1表示最后一个,-2表示倒数第二个,即从后往前。withscores可选,表示获取包括分数
ZRANGE key start end [WITHSCORES]

#同上,但score从高到低排序
ZREVRANGE key start end [WITHSCORES]

#获取score在min和max范围内的元素的个数
ZCOUNT key min max

#获取集合中元素的个数
ZCARD key

#根据元素,score原子增加increment
ZINCRBY key increment member

#清空集合内的score位于min和max之间的元素
ZREMRANGEBYSCORE key min max

#获取元素的索引(照score从低到高排列)
ZRANK key member

#移除集合中的该元素
ZREM key member

#获取该元素的score
ZSCORE key member

8.对象存储Hashes

#key是对象名,field是属性,value是值
HSET key field value

#同时设置多个属性
HMSET key field value [field value ...]

#获取该对象的该属性
HGET key field

#获取多个属性值
HMGET key field value [field value ...]

#获取对象的所有信息
HGETALL key

#获取对象的所有属性
HKEYS key

#获取对象的所有属性值
HVALS key

#删除对象的该属性
HDEL key field

#查看对象是否存在该属性
HEXISTS key field

#原子自增操作,只能是integer的属性值可以使用
HINCRBY key field value

#获取属性的个数
HLEN key

9.sort排序
返回或保存给定列表、集合、有序集合key中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
9.1.最简单的sort使用方法是sort key和sort key desc。

#返回键值从小到大排序的结果
sort key

#返回键值从大到小排序的结果
sort key desc

9.2.使用alpha修饰符对字符串进行排序
因为sort命令默认排序对象为数字,当需要对字符串进行排序时,需要显式地在sort命令之后添加alpha修饰符。
sort key alpha
sort key alpha desc

9.3.使用limit修饰符限制返回结果
排序之后返回元素的数量可以通过limit修饰符进行限制,修饰符接受offset和count两个参数。offset:指定要跳过的元素数量,即起始位置。count:指定跳过offset个指定的元素之后,要返回多少个对象。
# 返回列表中最小的5个值
sort key limit 0 5

9.4.使用外部key进行排序
可以使用外部 key 的数据作为权重,代替默认的直接对比键值的方式来进行排序。
#通过使用by选项,可以让key按其他键的元素来排序
示例: sort uid by user_level_*

#使用get选项,可以根据排序的结果来取出相应的键值
示例:sort uid get user_name_*

#可以同时使用多个get选项,获取多个外部键的值
示例:sort uid get user_level_* get user_name_*

#get有一个额外的参数规则,那就是可以用#获取被排序键的值
示例:sort uid get # get user_level_* get user_name_*

#通过将一个不存在的键作为参数传给 by 选项, 可以让 sort 跳过排序操作,直接返回结果
示例:sort uid by not-exists-key

10.事务
redis内置了很多原子操作的命令,比如incr,getset等,但实际中我们希望将一组命令原子的执行,这时候就需要用到事物。做法如下:
a.使用关键字multi
b.输入你想要的命令组合
c.输入exec来执行,或discard来放弃

参考地址:

http://www.cnblogs.com/woshimrf/p/5198361.html

http://doc.redisfans.com/

原文地址:https://www.cnblogs.com/web424/p/6802587.html