redis笔记02-字符串相关命令

目录

【redis的key相关的操作】

【Redis切换数据库】

【Redis字符串相关的操作】

【Redis BIT相关命令】

【key和字符串命令总结】


【redis的key相关的操作】

keys pattern:查询相应的key

在redis里,允许模糊查询key,有3个通配符 *、?、[]

* 通配任意多个字符

? 通配单个字符

[] 通配括号内的某1个字符

查看当前都有哪些key,使用 keys * 

 也可以完整匹配或者模糊匹配,例如:keys site,keys s*,如下查询方式都能够查到“site”

keys site
keys s*
keys site*
keys sit[ey]
keys si?e

randomkey:返回随机key

type key

作用:返回key存储的值的类型,

返回值有: string,link,set,order set, hash

exists key

作用:判断key是否存在,

返回:1/0

del key1 key2 ... KeyN ,

[作用] 删除1个或多个键

[返回值] 不存在的key忽略掉,返回真正删除的key的数量

rename key newkey

[作用]给key赋一个新的key名

[提示]如果newkey已存在,则newkey的原值被覆盖

测试 rename 一个已经存在的key(先删掉现有的所有的key)

renamenx key newkey

[作用] 把key改名为newkey,解决上面6.1的问题

[返回] 发生修改返回1,未发生修改返回0

[提示] nx--> not exists, 即, newkey不存在时,作改名动作

ttl key 

[作用] 查询key的生命周期

[返回] 秒数

pttl key, 以毫秒返回生命周期

注:对于不存在的key或已过期的key/不过期的key,都返回-1;Redis2.8中,对于不存在的key,返回-2。

expire key 整型值(秒) 

[作用] 设置key的生命周期,以秒为单位

pexpire key

[作用] 设置生命周期,以毫秒数为单位

persist key

[作用] 把指定key置为永久有效

例如:给某个key设置了生命周期10秒,然后立即persist,那么这个key的生命周期又变成永久了。

【Redis切换数据库】

Redis中共有16个数据库(或者叫服务器)。打开 redis.conf可以看到:

一个redis进程,打开了不止一个数据库, 默认打开16个数据库,从0到15编号,如果想打开更多数据库,可以从上面的配置文件修改。

select 1

[作用] 切换到1号数据库

现在使用 select 1 之后,再查看 keys * 就会发现并没有数据。因为默认的之前的数据都存储在第0号数据库,现在切换到第1号数据库,就没有数据了。

再回到0号数据库就又有数据了。

move key db

[作用] 移动某个key到另一个数据库

例如:move site 1

【Redis字符串相关的操作】

set key value [ex 秒数]/[px 毫秒数]

如:

set a 1 ex 10 , 10秒有效

set a 1 px 9000 , 9秒有效

注: 如果ex,px同时写,以后面的有效期为准

如 set a 1 ex 100 px 9000, 实际有效期是9000毫秒

[测试] 设置一个key,有效周期为10秒

127.0.0.1:6379> setex name 20 zhangsan 
127.0.0.1:6379> ttl name
(integer) 19

set key value [nx]/[xx]

nx (not exist): 表示key不存在时,执行操作

xx: 表示key存在时,执行操作

[测试] 设置一个已经存在的key,后面分别加 nx 和 xx 的结果区别

注意:后面加xx 的时候,必须操作的是一个已经存在的key,否则不会成功。

mset [作用] 批量设置多个键值

例: mset key1 v1 key2 v2 ....

get key [作用] 获取key的值

mget key1 key2 ... keyn [作用]批量获取多个key的值

127.0.0.1:6379> mset k1 AAA k2 BBB k3 CCC
127.0.0.1:6379> mget k1 k3
1) "AAA"
2) "CCC"

127.0.0.1:6379> setnx name zhangsan
(integer) 1
127.0.0.1:6379> setnx name lisi
(integer) 0
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379>
127.0.0.1:6379> msetnx k1 AAA k2 BBB
(integer) 1
127.0.0.1:6379> mget k1 k2
1) "AAA"
2) "BBB"
127.0.0.1:6379> msetnx k2 CCC k3 DDD
(integer) 0
127.0.0.1:6379> mget k1 k2 k3
1) "AAA"
2) "BBB"
3) (nil)

setrange key offset value [作用] 把字符串的offset偏移字节,改成value

通俗的说,就是把对应的字符串从第offset个字符开始替换成value

例如:

set word hello

setrange word 2 ??

注意: 如果偏移量>字符长度, 该字符自动补0x00

例如:

setrange word 6 !!

append key value [作用] 把value追加到key的原值上

getrange key start stop [作用]是获取字符串中 [start, stop]范围的值

注意: 对于字符串的下标,左数从0开始,右数从-1开始

127.0.0.1:6379> set key helloworld
127.0.0.1:6379> getrange key 0 3
"hell"

[命令]

set title 'chinese'

getrange title 0 3 → "chin"

getrange title 1 -2 → "hines"

注意:

① start>=length(start 所处位置在stop右边), 则返回空字符串

② stop>=length,则截取至字符结尾

getset key newvalue [作用] 获取并返回旧值,设置新值

127.0.0.1:6379> getset key phpredis
"helloworld"
127.0.0.1:6379> get key
"phpredis"

[命令]

set status sleep

getset status wakeup → "sleep"

incr key [作用] 指定的key的值加1,并返回加1后的值

decr key [作用] 指定的key的值减1,并返回减1后的值

注意:

① 不存在的key当成0,再incr操作

② 范围为64有符号

incrby key number [作用] 指定的key的值加number,并返回结果

decrby key number [作用] 指定的key的值减number,并返回结果

incrbyfloat key floatnumber [作用] 指定的key的值加浮点值,并返回结果(注意:没有decrbyfloat

【Redis BIT相关命令】

在 Redis 中,字符串都是以二进制的方式来存储的。例如 set k1 a,a 对应的 ASCII 码是 97,97 转为二进制是 01100001,BIT 相关的命令就是对二进制进行操作的。


getbit:key 对应的 value 在 offset 处的 bit 值。
setbit:修改 key 对应的 value 在 offset 处的 bit 值
bitcount:统计二进制数据中 1 的个数。

setbit key offset value [作用] 设置offset对应二进制位上的值 [返回]该位上的旧值

大写字母和小写字母之间的ASCII相差32位,因此若要将大写字母转化为小写,只需要将第2位的原有的0改为1,看下图:

[命令] setbit char 2 1

同样的,要把小写变成大写,只需要把第2位的1改成0:

注意:

① 如果offset过大,则会在中间填充0,

② offset最大2^32-1 = 4294967296-1,可推出最大的的字符串为512M

getbit key offset [作用] 获取值的二进制表示,对应位上的值(从左,从0编号)

其实就是取对应的二进制的某个数值。例如A的二进制为 0100 0001

bitop operation destkey key1 [key2 ...]

对key1,key2..keyN作operation,并将结果保存到 destkey 上。operation 可以是 AND 、 OR 、 NOT 、 XOR。注意: 对于NOT操作, key不能多个。

setbit的应用:统计一个人都有哪些天在线,或者打卡计数。

比如:peter在第1、3、4、8、9天分别打卡过,然后统计他的在线天数,使用bitcount peter。速度快,性能好。

127.0.0.1:6379> setbit peter 1 1
(integer) 0
127.0.0.1:6379> setbit peter 3 1
(integer) 0
127.0.0.1:6379> setbit peter 4 1
(integer) 0
127.0.0.1:6379> bitcount peter
(integer) 3

【key和字符串命令总结】

【Redis 的 key的操作命令】

keys */?/[]:查询相应的key;完整匹配:keys site;模糊匹配:keys s*、keys sit[ey]

randomkey:随机返回key

type key:判断key的类型 string,set,zset,link,hash

exists key:判断key是否存在,返回1/0

del key1 key2 ... KeyN :删除1个或多个键

rename key newkey:给key赋一个新的key名,原值被覆盖

renamenx key newkey:同rename,不覆盖

move key 2:移动key到2号数据库

ttl/pttl key:查询key的剩余生命周期(秒/毫秒)

expire/pexpire key: 设置key的生命周期(秒/毫秒)

persist key: 设置key永久有效

【Redis字符串类型的操作】

set key value [ex]/[px]:多少[秒]/[毫秒]有效。

set key value [nx]/[xx]:设置一个[已存在]/[不存在]的key。

mset:一次性设置多个键值,mset key1 v1 key2 v2 ...。

get key: 获取key的值。

mget key1 key2 ... keyN: 获取多个key的值。

setrange key offset value:从offset个字符开始替换成value。

append key value:把value追加到key的原值上。

getrange key start stop :获取[start, stop]范围。

getset key newvalue :返回旧值并设置新值。

incr/decr key:值加/减1。

incrby/decrby key number:值加/减number。

incrbyfloat key floatnumber:值加浮点值(没有decrbyfloat)

【BIT 命令】

getbit:key 对应的 value 在 offset 处的 bit 值。

setbit:修改 key 对应的 value 在 offset 处的 bit 值

bitcount:统计二进制数据中 1 的个数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮尘笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值