redis常用命令

通用命令

1.keys pattern

含义:查找所有符合给定模式(pattern)的key

keys *             遍历所有key

keys he[h-l]*    遍历以he开头,第三个字符为h-l之间的所有key

keys ph?            ?代表一个字符

注意:keys命令一般不在生产环境中使用

生产环境的key比较多,keys这个命令是一个O(n)的命令

由于Redis是单线程的,这个命令的操作会阻塞其他操作

可以在从节点上执行keys命令

使用SCAN命令代替keys命令

2.dbsize

含义:查找当前数据库的key的数量

3.exists key

含义:检查给定的key是否存在

4.del key1 [key2...]

含义:在key存在时删除key

5.expire key second

含义:为给定key设置过期时间,单位为秒

6. ttl key

含义:以秒为单位,返回给定key的剩余生存时间(TTL , time to live)

不存在key返回-2

无过期时间的key返回-1

7.persist key

含义:移除key的过期时间,key将持久保存

8.type key

含义:返回key所存储的值的类型

不存在的key返回none

String数据类型

String-结构

结构:Key-Value对

Value:可以是字符串、数字,也可以是二进制数组

限制:Value最大值为512MB

String-常用命令

1.get  key

含义:获取指定key的值

2.set key value

含义:设置指定key的值

3.incr key

含义:将key中存储的数字值增一

4.incrby key increment

含义:将key所存储的数字值加上给定的增量

5.decr key

含义:将key中存储的数字值减一

6.decrby key decrement

含义:将key所存储的数字值减去给定的减量

7.setnx key value

含义:只有当key不存在时才设置key的值

8.set key value nx

含义:与⑦相同,只有当key不存在时才设置key的值

###9.setex key second value

含义:设置指定key的值,同时设置该key的过期时间,单位为秒

10.set key second value ex

含义:与⑨相同,设置指定key的值,同时设置该key的过期时间,单位为秒

11.set key value xx

含义:只有key存在时才设置key的值

12.mget key1 [key2...]

含义:获取所有(一个或多个)指定key的值

13.mset key1 value1 [key2 value2...]

含义:同时设置一个或多个key-value对

String-不太常用命令

1.getset key value

含义:将给定key的值设置为value,并返回key的旧值

2.append key value

含义:将value追加到旧值的末尾

3.strlen key

含义:返回key所存储的字符串值的长度

当key不存在时,返回0

一个中文占2个字节

时间复杂度为O(1),strlen在redis内部不需要查询整个字符串来得到长度

4.incrbyfloat key increment

含义:将key所存储的值加上给定的浮点值

5.getrange key start end

含义:返回key中字符串区间为[start,end]的子串,索引从0开始

6.setrange key offset value

含义:用value擦书覆盖指定key所存储的字符串值,从偏移量offset开始,索引从0开始

key = content的时候,执行setrange key 1 haha 之后,key=chahant

Hash数据类型

Hash-常用命令

1.hget key field

含义:获取存储在哈希表中指定field的值

2.hset key field value

含义:将哈希表中指定field的值设置为value

3.hdel key field1 [field2...]

含义:删除哈希表中一个或多个field

4.hexists key field

含义:判断哈希表中,指定field是否存在

5.hlen key

含义:获取哈希表中字段的数量

6.hmget key field1 [field2...]

含义:获取哈希表中所有给定field的值

7.hmset key field1 value1 [field2 value2...]

含义:同时将一个或多个field-value对设置到哈希表中

8.hincrby key fiel increment

含义:为哈希表中指定field的值加上一个整型增量

9.hgetall key

含义:获取哈希表中所有字段和值

时间复杂度为O(n),不建议使用

10.hkeys key

含义:获取哈希表中的所有字段

时间复杂度为O(n),不建议使用

11.hvals key

含义:获取哈希表中的所有值

时间复杂度为O(n),不建议使用

12.hsetnx key field value

含义:只有当哈希表中field不存在时,才设置该field的值

13.hincrbyfloat key field increment

含义:为哈希表中指定field的值加上一个浮点数增量

List数据类型

List-结构

列表:有序、可以有重复元素

索引相关知识

索引从左往右,从0开始逐个增大      0      1      2      3      4      5

索引从右往左,从-1开始逐个减小    -6    -5    -4    -3      -2    -1   

List-常用命令

1.rpush key value1 [value2...]

含义:在列表后侧添加一个或多个值

2.lpush key value1 [value2...]

含义:在列表左侧添加一个或多个值

3.linsert key before/after value newValue

含义:在列表指定的value前/后插入newValue,时间复杂度为O(n)

4.lpop key

含义:从列表左侧弹出一个值

5.rpop key

含义:从列表右侧弹出一个值

6.lrem key count value

含义:根据count值,从列表中删除值为value的项,时间复杂度为O(n)

count > 0 时,从左往右遍历,删除最多count个与value相等的值

count < 0 时,从右往左遍历,删除最多Math.abs(count)个与value相等的值

count = 0 时,删除所有与value相等的值

7.ltrim key start end

含义:对一个列表进行修剪,只保留指定区间内的元素,不在区间内的元素都将被删除,时间复杂度为O(n)

8.lrange key start end

含义:获取列表指定索引范围的所有元素,时间复杂度为O(n)

9.lindex key index

含义:获取列表指定索引的元素,时间复杂度为O(n)

10.llen key

含义:获取列表长度,时间复杂度为O(1)

11.lset key index newValue

含义:设置列表指定索引的值为newValue,时间复杂度为O(n)

注意:

必须存在这个值才能设置成功,否则会报错

12.blpop key timeout

含义:移除并获取列表左边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止

timeout单位为秒,timeout=0时不阻塞

13.brpop key timeout

含义:移除并获取列表右边第一个元素,如果列表没有元素会阻塞直到等待超时或可弹出元素为止

timeout单位为秒,timeout=0时不阻塞

Set数据类型

Set-结构

集合:无序、不能包含重复元素

Set-集合内操作

1.sadd key memebr1 [member2...]

含义:向集合中添加一个或多个成员

2.srem key member1 [member2...]

含义:从集合中删除一个或多个成员

3.scard key

含义:获取集合中的元素个数

4.sismember key member

含义:判断member元素是不是集合的成员

5.srandmember key count

含义:随机从集合中取出count个成员

6.spop key

含义:随机移除并返回集合中的一个成员

7.smembers key

含义:获取集合中的所有成员

时间复杂度为O(n),不建议使用,类似的操作可以使用SSCAN

Set-集合间操作

1.sdiff key1 [key2...]

含义:返回给定所有集合的差集

2.sdiffstore destKey key1 [key2...]

含义:计算给定所有集合的差集,并存入destKey

3.sinter key1 [key2...]

含义:返回给定所有集合的交集

4.sinterstore destKey key1 [key2...]

含义:计算给定所有集合的交集,并存入destKey

5.sunion key1 [key2...]

含义:返回给定所有集合的并集

6.sunionstore destKey key1 [key2...]

含义:计算给定所有集合的并集,并存入destKey

ZSet数据类型

ZSet-结构

有序集合:有序、不能包含重复元素

每个节点包含:score和value两个属性,根据score进行排序

索引相关知识

索引从左往右,从0开始逐个增大      0      1      2      3      4      5

索引从右往左,从-1开始逐个减小    -6    -5    -4    -3      -2    -1   

ZSet-常用命令

1.zadd key score1 member1 [score2 member2...]

含义:向有序集合添加一个或多个成员,或者更新已存在成员的分数

2.zrem key member1 [member2...]

含义:从有序集合中删除一个或多个成员

3.zscore key member

含义:获取有序集合中成员的分数

4.zincrby key increment member

含义:对有序集合中指定成员的分数加上增量increment

5.zcard key

含义:返回有序集合中元素的总个数

6.zrange key start end [withscores]

含义:通过索引返回有序集合中指定区间的成员信息

withscores 参数,加上代表一并将score数据返回

时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=返回的总个数

###7.zrangebyscore key min max [withscores][limit]

含义:通过score返回有序集合中指定分数区间的成员信息

withscores 参数,加上代表一并将score数据返回

limit参数,加上代表限制返回多少条数据

时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=返回的总个数

###8.zscore key min max

含义:返回有序集合中指定分数范围内的元素个数

时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=指定分数范围内的元素个数

9.zremrangebyscore key min max

含义:删除有序集合中指定分数区间的所有成员

时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=指定分数范围内的元素个数

10.zremrangebyrank key start end

含义:删除有序集合中给定索引区间的所有成员

时间复杂度:O(log(n) + m) , n=有序集合中的元素个数,m=指定索引范围内的元素个数

String VS Hash

相似的API

StringHash

gethget

set setnxhset hsetnx

delhdel

incrbyhincrby

mget msethmget hmset

保存对象的三种方式与优缺点

方式一:采用string,将整个对象进行序列化,设计Key为对象的业务ID

方式二:采用string,设计Key为对象的业务ID+属性名,对各个属性分散存储

方式三:采用hash,设计Key为对象的业务ID,属性名为field

优点缺点

方式一访问Redis编程简单相比方式二比较节约内存序列化开销修改属性需要操作整个数据

方式二Redis数据直观可查可以方便更新属性内存占用较大key较为分散

方式三Redis数据直观可查比起方式二比较节约内存可以方便更新属性访问Redis编码稍微比较复杂TTL不好控制

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容