全局操作:
#查看所有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来放弃
参考地址: