Redis命令总结

14 篇文章 0 订阅

常用命令 

keys *                                            查看所有的键

get  key                                          获取对应key的value

set key value                                     设置key、value

./redis-server                                    启动Redis服务(窗口启动)

./redis-server &                                  启动Redis服务(后台启动)

kill -9 PID                                       关闭Redis服务

save                                              保存(持久化到Redis中)不建议这么做

./redis-cli shutdown                              关闭连接并保存

./redis-server —port  端口号                      切换端口号

./redis-cli -p port                              启动指定端口(port)

./redis-cli -p port shutdown                     关闭指定端口(port)的连接

./redis-server  ../redis.comf &                  使用配置文件启动,后台启动(建议这种方式启动)

./redis-server ../redis.conf                     指定配置文件启动

./redis-cli -p port -h ip                        启动端口(port),连接指定地址(ip)的redis

./redis-cli -p port -a pass                      启动端口(port),输入连接密码(pass)

monitor                                          查看redis日志

./redis-cli -p 端口号 -a 密码                     如果redis存在密码时用该命令



redis.conf里设置requirepass 登陆redis的密码

 

Redis基础命令

info                                                  查看系统信息

flushdb                                               清除当前space

flushall                                              清除所有space

dbsize                                                当前database的数量

quit                                                  退出连接

 

 

Redis键命令

select number               切换命名空间(number从0开始)

del key                     删除一个key

exists key                  判断这个key是否存在

ttl key                     查看key的剩余时间,单位是秒(返回-1表示没有过期时间,为-2说明已过期)

expire key time             设置key的过期时间(time)

type key                    返回key的类型

hset key value              设置一个hash

randomkey                   返回一个随机的key

rename oldkey newkey        重命名一个key

renamenx oldkey newkey      重命名并复制一个key,如果key存在则失败

 

String字符串

setex key 时间(秒) value             set一个键的时候设置有效时间

psetex key 时间(毫秒) value          

getrange key start end              获取字符串指定下标的所有值(时间复杂度:o(1))

setrange key index value            设置指定下标所有对应的值(时间复杂度:o(1))

setnx key value                     只有当不存在这个key时才会set成功(时间复杂度:o(1))

set key value xx                    只有当key存在时才会设置(时间复杂度:o(1))

msetnx key value key value          批量设置key,value,如果有一个key存在,则都失败。具有原子性

mset key value key value            一次设置多个key value,原子操作(时间复杂度:o(n))

mget key1 key2 key3                 一次获取多个key的value,原子操作(时间复杂度:o(n))

getset key newvalue                 先拿一个key,再set这个key的value。会返回旧的值

append key value                    给这个key的value的末尾追加一个value

strlen key                          返回这个key的value的长度(时间复杂度:o(1))

   

 

 

Integer数值

incr key                       给key每次加1,必须是数值类型(如果key不存在,自增后get(key)=1,时间复杂度:o(1))

decr key                       给key每次减1(如果key不存在,自减后get(key)=-1,时间复杂度:o(1))

incrby key 增量值               指定key增量多少(如果key不存在,自增后get(key)=增值量,时间复杂度:o(1))

decrby key 减少值               给指定key减少(如果key不存在,自减后get(key)=减少值,时间复杂度:o(1))

incrbyfloat key 增量值          指定key增量多少(如果key不存在,自增后get(key)=增值量(小数,3.5),时间复杂度:o(1))

 

Hash哈希

特点:

  • Mapmap
  • Small redis(redis本身是一个key value的非关系型数据库,Hash的value里又是一个key value的形式,所以称他为Small redis)
  • field(属性)不能相同,value可以相同
hget key field                                  获取hash key对应的field的value(时间复杂度:o(1))

hset key field value                            设置hash key对应的field的value(时间复杂度:o(1))

hdel key field1 field2                          删除hash key对应的field的value(时间复杂度:o(1))

hgetall key                                     返回hash key对应所有的field和value

hexists key field                               判断hash key的field是否存在,存在返回1(时间复杂度:o(1))

hkeys key                                       返回hash key对应所有field

hvals key                                       返回hash key对应所有field的value

hlen key                                        返回hash key field的数量(时间复杂度:o(1))

hmget key field1 field2                         批量获取hash key的一批field对应的值

hmset key field1 value1 field2 value2           批量设置hash key的一批field value

hsetnx key field value                          设置hash key对应faild的value,如果faild存在则失败(时间复杂度:o(1))

hincrby key faild intCount                      hash key对应的faild的value自增intCount(时间复杂度:o(1))

hincrbyfloat key faild floatCount               hincrby浮点数版(时间复杂度:o(1))

 

List列表

lpush key values                                 从列表左端插入值(1-N个),时间复杂度(o(1~N))

rpush key value1 value2....valueN                从列表右端插入值(1-N个),时间复杂度(o(1~N))

linsert key before|after value newValue          在list指定的值前|后插入newValue,时间复杂度(o(n))

lpop key                                         从列表左侧弹出一个item,时间复杂度(o(1))

rpop key                                         从列表右侧弹出一个item,时间复杂度(o(1))

blpop key timeout                                lpop阻塞版本,timeout是阻塞超时时间,timeout=0为永不阻塞,时间复杂度(o(1))

brpop key timeout                                rpop阻塞版本,timeout是阻塞超时时间,timeout=0为永不阻塞,时间复杂度(o(1))

lrem key count value                             根据count值,从列表中删除所有value相等的项,时间复杂度(o(n))
(1)count > 0,从左到右,删除最多count个value相等的项
(2)count < 0,从右到左,删除最多Math.abs(count)个value相等的项;注:Math.abs(count)如果参数是非负数,则返回该参数。如果参数是负数,则返回该参数的相反数
(3)count = 0,删除所有value相等的项

ltrim key start end                              按照索引范围修剪列表,时间复杂度(o(n))

lrange key start end(包含end)                    获取列表指定索引范围内的所有item,时间复杂度(o(n))

lindex key index                                 获取列表指定索引的
item,时间复杂度(o(n))

lset key index newValue                          设置列表指定索引的值为newValue

llen key                                         获取列表长度,时间复杂度(o(1))




Tips:
1、假如说你想做一个类似站的功能,你可以使用:lpush + lpop = stack

2、假如说你想实现一个队列,你可以使用:lpush + rpop = queue,相当于实现了一个队列

3、如果你想控制一个有固定数量的列表,而不是让他无限制放大,你可以使用:lpush + ltrim = capped collection,控制列表的一个大小

4、如果你想实现消息队列,你可以使用:lpush + brpop = message queue

 

Set集合(无序,并且不重复)

sadd key element                                     向集合key添加element(如果element存在,则添加失败返回0),时间复杂度o(1)

srem key element                                     将集合key中的element移除掉,时间复杂度o(1)

scard key                                            计算集合大小

sismember key element                                判断element是否在集合中

smembers key                                         获取集合所有元素

srandmember key number                               返回集合中一个或多个随机元素(number 返回数量)

spop key                                             移除set中的一个随机元素,并返回

sdiff key1 key2                                      求两个set的差集

sinter key1 key2                                     求两个set的交集

sunion key1 key2                                     求两个set的并集

sdiff|sinter|sunion + store destkey                  将差集、交集、并集结果保存在destkey中


srandmember 和 spop
spop从集合中弹出
srandmember不会破坏集合


Tips:
sadd = tagging                                       做一些标签
spop/srandmember = random item                       做一些随机数的一些相关的场景
sadd + sinter = social graph                         做一些社交相关的应用

 

 

Sortedset有序集合(元素(element)不可以重复,分值(score)可以)

zadd key score1 element1(可以是多对)                            添加一个有序集合(score浮点数分值),当key存在但不是有序集合类型时,返回一个错误,时间复杂度o(logN)

zrem key element(可以是多个)                                    移除有序集key中的一个或多个成员,不存在的成员将被忽略,时间复杂度o(1)

zscore key element                                             返回有序集key中,成员element的score值,如果element元素不是有序集key的成员,或key不存在,返回nil,时间复杂度o(1)

zincryby key increScore element                                为集合key的element的score值加上增量increScore或传递一个负数值让score减去相应的值,当key不存在或element不是key的成员时,zincryby key increScore element等同于ZADD key increScore element,当key不是有序集类型时,返回一个错误,score值可以是整数值或双精度浮点数,时间复杂度O(log(N))

zcard key                                                      返回有序集key的总个数,时间复杂度o(1)

zrank key element                                              返回有序集key中成员element的排名,其中集合成员按score值递增(从小到大)顺序排列,时间复杂度O(log(N))

zrange key start end [WITHSCORES]                              返回有序集key中,指定区间内的成员,可以通过使用WITHSCORES选项,让成员和它的score一并返回,时间复杂度O(log(N)+M),N为有序集的基数,而 M为结果集的基数

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]    返回有序集key中,所有score 值介于min和max之间(包括等于min或max)的成员。集合成员按score值递增(从小到大)次序排列。当offset 很大时,定位offset的操作可能需要遍历整个有序集,此过程最坏复杂度为O(N)时间。时间复杂度O(log(N)+M),N为有序集的基数,M为被结果集的基数。

zcount key min max                                             返回有序集key中,score值在min和max 之间(默认包括score值等于min或max)的成员的数量,时间复杂度:O(log(N))

zremrangebyrank key start stop                                 移除集合key中,指定排名(rank)区间内的所有成员,时间复杂度:O(log(N)+M),N为有序集的基数,而M为被移除成员的数量

zremrangebyscore key min max                                   移除有序集key中,所有score值介于min 和max之间(包括等于min或max)的成员。时间复杂度:O(log(N)+M),N为有序集的基数,而M为被移除成员的数量

zrevrank key element                                           返回有序集key中成员element的排名。其中集合成员按score值递减(从大到小)排序,时间复杂度:O(log(N))

zrevrange key start stop [WITHSCORES]                          返回有序集key中,指定区间内的成员。其中成员的位置按score值递减(从大到小)来排列。时间复杂度:O(log(N)+M)

zinterstore destination numkeys key                            计算给定的一个或多个有序集的交集,其中给定key的数量必须以numkeys参数指定,并将该交集(结果集)储存到destination,时间复杂度:O(N*K)+O(M*log(M)),N为给定key中基数最小的有序集,K为给定有序集的数量,M为结果集的基数。

zunionstore destination numkeys key                            计算给定的一个或多个有序集的并集,其中给定key的数量必须以numkeys参数指定,并将该并集(结果集)储存到 destination,时间复杂度:O(N)+O(M log(M)),N为给定有序集基数的总和,M为结果集的基数。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值