redis操作五种数据的命令说明

String字符串

赋值

表达式

set key value

127.0.0.1:6379> set mykey myvalue0
OK

set 会覆盖该key之前的值,如果不想数据被覆盖,可以用setnx,表示如果key不存在,才设置这个值

127.0.0.1:6379> setnx mykey 11
(integer) 0

另外可以用setex设置数据的有效期,表达式为

setex key [time] value

以下命令行表示有效时间为10秒

127.0.0.1:6379> setex name 10 lili
OK
取值

表达式

get key

127.0.0.1:6379> get key001
(nil)
127.0.0.1:6379> keys mykey
1) "mykey"

返回结果为nil表示无数据

多字符串回复

keys *

127.0.0.1:6379> keys *
1) "mykey"
127.0.0.1:6379> 
是否存在改key的值

exists mykey

如果存在,返回1

127.0.0.1:6379> exists mykey
(integer) 1
删除数据

del key

127.0.0.1:6379> del mykey
(integer) 1
从指定位置开始替换字符串

setrange key [index] value

index是从1开始数的,如下:

27.0.0.1:6379> set name qike@github
OK
127.0.0.1:6379> setrange name 5 qq.com
(integer) 11
127.0.0.1:6379> get name
"qike@qq.com"
批量设置/获取

批量设置:

mset k1 v1 k2 v2 k3 v3

批量获取:

mget k1 k2 k3

127.0.0.1:6379> mset name1 lili name2 zhangsan1 name3 wangwu
OK
127.0.0.1:6379> mget name1 name2 name3
1) "lili"
2) "zhangsan1"
3) "wangwu"
127.0.0.1:6379> 
返回旧值并设置新值

getset key newvalue

127.0.0.1:6379> getset  name qike@github
"qike@qq.com"
127.0.0.1:6379> 
递增数字

递增+1,注意如果key对应的类型为字符串而不是数字的时候,会抛出异常

incr key

递增指定数字

incrby key [byvalue]

递减数字

与递增相对应的,也有俩个

decr key
decyby key [byvalue]

追加字符串

append key value

获取字符串长度

strlen key

Hash类型

命令表达式说明
hsethset key field value给指定key为k-name的hash的field属性添加值
hgethget key field获取某个hash值得fied属性值
hmsethmset key f1 v1 f2 v1批量设置
hmgethmget key f1 f2批量获取
hdelhdel key f1 f2批量删除指定hash的field属性
hlenhlen key返回指定hash的键值对数目
hkeyshkeys key返回指定hash的所有field名称
hvalshavals key返回指定hash的所有值
hincrbyhincrby key fied1 [num]将fied1的值加num
hgetallhgetall key获取指定hash的所有属性和属性值

表格中的所有命令按顺序如下示例:

127.0.0.1:6379> hset user1 name zhangsan
(integer) 1
127.0.0.1:6379> hget user1 name
"zhangsan"
127.0.0.1:6379> hmset user2 name li4 age 20
OK
127.0.0.1:6379> hmget user2 name age
1) "li4"
2) "20"
127.0.0.1:6379> hdel user1 name
(integer) 1
127.0.0.1:6379> hget user1 name
(nil)
127.0.0.1:6379> hlen user2
(integer) 2
127.0.0.1:6379> hkeys user2
1) "name"
2) "age"
127.0.0.1:6379> hvals user2
1) "li4"
2) "20"
127.0.0.1:6379> hincrby user2 age 3
(integer) 23
127.0.0.1:6379> hget user2 age
"23"
127.0.0.1:6379> hgetall user2
1) "name"
2) "li4"
3) "age"
4) "23"

list(列表)

常用命令
命令表达式说明
lpushlpush key value1 [value…]将一个或多个值推入列表的左端,先进后出
rpushrpush key value1 [value…]将一个或多个值推入列表的右端,先进先出
lpoplpop key移除并返回列表最左端的元素
rpoprpop key移除并返回列表最右端的元素
lindexlindx key offset返回列表中偏移量为offset的元素
llenlen key返回元素的个数
lrangelrange key start end返回列表中从start偏移量到end的元素,包含偏移量在start和end的元素
ltrimltrim key start end对列表进行修剪,只保留从start到end偏移量的元素,偏移量为start和end的元素也会被保留
lsetlset key 0 b替换指定下标的元素
lremlrem key 1 b移除列表中第一个值为b的元素

注意,偏移量中,-1表示最后一个,-2表示倒数第二个,以此类推。

插入示例代码

127.0.0.1:6379> clear
127.0.0.1:6379> lpush list1 hello redis
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "redis"
2) "hello"
127.0.0.1:6379> rpush list2 hello redis
(integer) 2
127.0.0.1:6379> lrange list2  0 -1
1) "hello"
2) "redis"

获取元素命令行示例代码:

127.0.0.1:6379> rpush list3 1 2 3 4
(integer) 4
127.0.0.1:6379> range list 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6379> lpop list3
"1"
127.0.0.1:6379> rpop list3
"4"
127.0.0.1:6379> lrange list3 0 -1
1) "2"
2) "3"

元素裁剪示例代码:

127.0.0.1:6379> rpush list4 1 2 3 4 5
(integer) 5
127.0.0.1:6379> ltrim list4 2 3
OK
127.0.0.1:6379> lrange list4 0 -1
1) "3"
2) "4"
阻塞操作命令
命令表达式说明
blpopblpop key [key …] timeout从第一个非空列表中弹出最左端的元素,或者在最左端阻塞并等待可弹出的元素
brpopbrpop key [key …] timeout从第一个非空列表中弹出最右端的元素,或者在最右端阻塞并等待可弹出的元素
rpoplpushrpoppush src-key dest-key从src-key列表弹出最右端的元素,然后将该元素推入dest-key列表的最左端,并向用户返回列表的名称和该元素元素
brpoplpushbrpoppush src-key desy-key timeout从src-key列表弹出最右端的元素,然后将该元素推入dest-key列表的最左端,并向用户返回这个元素;如果src-key为空,那么在timeout秒内阻塞并等待可弹出的元素出现

示例代码如下:

127.0.0.1:6379> lpush listb 1 2 3
(integer) 3
127.0.0.1:6379> brpop listb 10
1) "listb"
2) "1"
127.0.0.1:6379> lpush list5 1 
(integer) 1
127.0.0.1:6379> rpush list5 2
(integer) 2
127.0.0.1:6379> rpush list6 l1
(integer) 1
127.0.0.1:6379> brpoplpush list5 list6 1
"2"
特别说明

列表的使用场景非常广泛:
- 记录论坛中用户最近发布的帖子,记录帖子最新的评论
- 使用生产者消费者模式进行线程间通信,生产者将数据添加到列表中,消费者从列表取出并执行任务
- 使用ltrim还可以限制列表中的数据个数

set

常用set命令行
命令表达式说明
saddsadd key item [item…]批量添加元素
sremsrem key item[item]批量移除元素
sismembersismember key item检查集合中是否存在item元素
scardscard key查询集合元素数量
srandmembersrandmember key [count]随机返回count个元素,如果集合元素不足count,返回元素会出现重复
spopspop key随机移除一个元素,并返回
smovesmove src-key dest-key item从src集合中移除元素并添加到dest集合
多个set集合组合操作命令行
命令表达式说明
sdiffsdiff key [key…]返回存在第一个集合,但是不存在与其他集合的数据,差集运算
sdiffstoresdiffstore des-key key [key…]将那些存在于第一个集合但是不存在与其他集合的元素存储到dest集合中
sintersinter key [key…]取交集
sinterstoresinterstore dest-key key [key…]将那些同时存在于所有集合中的元素存储到dest集合中
sunionsunion key [key…]返回至少存在于一个集合中的元素,交集运算
sunionstoresunionstore dest-key key [key…]将交集元素存储到dest中

set主用用于tag标签,比如我们保存博客的标签信息:

127.0.0.1:6379> sadd blog:1:tags java 基础面向对象
(integer) 2
127.0.0.1:6379> srandmember blog:1:tags 3
1) "\xe5\x9f\xba\xe7\xa1\x80\xe9\x9d\xa2\xe5\x90\x91\xe5\xaf\xb9\xe8\xb1\xa1"
2) "java"

zset有序集合

常见操作
命令表达式说明
zaddzadd key score member [score member…]添加元素,score可以用+inf和-inf分别表示正无穷和负无穷
zscorezscore key member获取元素的分数
zcountzcount key min max获取指定返回内的元素个数
zremzrem key item [item…]删除元素
zremrangebyrankzremrangerank key start end删除指定排名范围的元素
zremrangebyscorezremrangebyscore key min max删除指定分数范围的元素
zrankzrank key item获取元素的排名(从小到大排序)
zrevrankzrevrank key item获取元素的排名(从大到小排序)
zincrbyzrncyby key inscrscore item给元素item增加inscrsocre分数,如果inscrescore为复数,表示减
zrangezrange key start stop [withscore]从小到大返回score分值在某个范围(包含俩端元素)的元素列表,需要同时返回分数的话在尾部添加withscore
zrevrrangezrevrange key start stop [withscore]类似于zrange,只不过返回的元素从大到小排列
zrangebyscorezrangebyscore key min max [withscore] [limt offset count]从小到大返回min到max范围的元素

zrangebyscore这里详细说下,zrangebyscore的表达式为

zrangebyscore key min max [withscore] [limt offset count]

意思为从小打到返回min到max范围(包含俩端)的元素,如果不希望包含俩端在分数前加”(“,比如希望返回80到100分数的数据,可包含100但是不包含80

zrangbyscore key-name (80 100

withscore余zrange一样,表示分数也返回
limt offset count类似于sql里面的分页,表示在新得到的元素列表的技术上向右偏移offset元素,并只获取前count个元素

Y有序集合的应用场景很多,比如文章的点击量排行

交集运算

有序集合的交集运算表达式如下:

zinterstore des-key numkeys key[key…] [weights weight[weight…]] [aggeregate SUM|MIN|MAX]

该命令用于计算多个有序集合的交集并将结果储存在另外一个有序集合中,返回值是交集元素的个数。

aggeregate的默认值是sum(可以缺省),表示交集元素中的分数为每个集合中该元素的和。min、max分别表示取最小值和最大值。

weight表示每个集合中的交集元素的分值在计算时所占的 权重。

与交集对应的还有一个命令行zunionstore用于取并集,表达式及用法与zintersore类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值