redis--04--操作--String

redis–04–操作–String


1、简介

  1. String类型是最基本的数据类型,一个key对应一个value。
  2. String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
  3. String类型value最多可以是512MB

2、数据结构

  1. 数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。
  2. 是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.

在这里插入图片描述

如图中所示

1. 内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。
2. 当字符串长度小于1M时,扩容都是加倍现有的空间,
3. 当字符串长度超过1M时,扩容时一次只会多扩1M的空间。
4. 字符串最大长度为512M。

3、操作

3. 1、set key value [ex ss] | [px sss] [nx | xx]

  1. ex ss:设置生命周期,单位秒
  2. px sss:设置生命周期,单位毫秒
  3. ex,px不能同时写
  4. nx: 表示key不存在时,执行set key操作,否则不做任何操作
  5. xx: 表示key存在时,执行set key操作,否则不做任何操作
127.0.0.1:6379> set userid1 1101 ex 120
OK
127.0.0.1:6379> ttl userid1
(integer) 117
127.0.0.1:6379> set userid1 1101 px 500000
OK
127.0.0.1:6379> pttl userid1
(integer) 492500
127.0.0.1:6379> set userid1 1101   px 55500 nx
(nil)
127.0.0.1:6379> set userid1 1101   px 55500 xx
OK
127.0.0.1:6379> set userid2 1101   px 55500 nx
OK
127.0.0.1:6379> keys *
1) "userid1"
2) "userid2"

3. 2、mset key1 v1 key2 v2 …

一次性设置多个键值

3. 3、mget key1 key2 …keyn

获取多个key的值

127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "2"
3) "3"

3. 4、setrange key offset value

  1. 从字符串的offset字节处开始,替换成value
  2. 如果offset>字符长度, 该字符自动补0x00
127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> setrange userid 2 aa
(integer) 6
127.0.0.1:6379> get userid
"11aa11"
127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> setrange userid 8 bb
(integer) 10
127.0.0.1:6379> get userid
"111111\x00\x00bb"
127.0.0.1:6379> 

3. 5、append key value

作用: 把value追加到key的原值上

127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> append userid 222
(integer) 9
127.0.0.1:6379> get userid
"111111222"

3. 6、getrange key start stop

  1. 是获取字符串中 [start, stop]范围的值
  2. 对于字符串的下标,左数从0开始,右数从-1开始
  3. start>=length, 则返回空字符串
  4. stop>=length,则截取至字符结尾
  5. start >stop, 返回空字符串

127.0.0.1:6379> set userid 123456
OK
127.0.0.1:6379> getrange userid 0 2
"123"
127.0.0.1:6379> getrange userid -3 -1
"456"
127.0.0.1:6379> getrange userid 0  -1
"123456"

3. 7、getset key newvalue

  1. 设置新值,返回旧值
  2. 相当于先做get操作,后做set操作
127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> getset userid 222222
"111111"
127.0.0.1:6379> get userid
"222222"

3. 8、incr key

  1. 指定的key的值加1,并返回加1后的值
  2. 注意:范围为64位有符号
---不存在的key当成0,再incr操作
127.0.0.1:6379> incr aa
(integer) 1
127.0.0.1:6379> get aa
"1"
--incr key操作
127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379>  incr userid
(integer) 111112

3. 9、incrby key n

  1. 指定的key的值加n,并返回加n后的值
127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> incrby userid 10
(integer) 111121

3. 10、incrbyfloat key floatnumber

指定的key的值加floatnumber,并返回加floatnumber后的值

127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> incrbyfloat userid 5.5
"111116.5"

3. 11、decr key

指定的key的值减1,并返回减1后的值

127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> decr userid 
(integer) 111110

3. 12、decrby key n

指定的key的值减n,并返回减n后的值

127.0.0.1:6379> set userid 111111
OK
127.0.0.1:6379> decrby userid 11
(integer) 111100

3. 13、getbit key offset

  1. 从值的二进制表示,返回对应offset位上的值(从左到右)
  2. 例如:A的二进制是0100 0001
3. 以字符A为案例

A的二进制是0100 0001

127.0.0.1:6379> set char A
OK
127.0.0.1:6379> getbit char 0
(integer) 0
127.0.0.1:6379> getbit char 1
(integer) 1
127.0.0.1:6379> getbit char 2
(integer) 0
127.0.0.1:6379> getbit char 3
(integer) 0

3. 14、setbit key offset value

  1. 设置offset对应二进制位上的值为value,返回该位上的旧值
  2. 注意:
    1. 如果offset过大,则会在中间填充0,
    2. offset最大2^32-1,最大的的字符串为512M
3. 以字符A为案例

A的二进制是0100 0001

127.0.0.1:6379> set char A
OK
127.0.0.1:6379> setbit char 2  1
(integer) 0
127.0.0.1:6379> get char
"a"

3. 15、bitop operation destkey key1 [key2 …]

  1. 对key1,key2…keyN作operation,并将结果保存到 destkey 上。
  2. operation 可以是
    1. AND:与
    2. OR:或
    3. NOT:非
      1. 对于NOT操作, key不能多个
    4. XOR:异或
3. 设置一个userid1 的二进制位0010 0000
127.0.0.1:6379> setbit userid1 7 0
(integer) 0
127.0.0.1:6379> setbit userid1 2 1
(integer) 0
3. 设置一userid2为A对应的二进制位0100 0001
127.0.0.1:6379> set userid2 A
OK
3. 对userid1和userid2做or操作
127.0.0.1:6379> bitop or return userid1 userid2
(integer) 1
127.0.0.1:6379> get return
"a"
0010 0000
or
0100 0001
----------
0110 0001

97="a"

3. 16、strlen key

  1. 返回键值长度
  2. 如果键不存在,返回0
127.0.0.1:6379> set a 1111
OK
127.0.0.1:6379> strlen a
(integer) 4
127.0.0.1:6379> 

3. 17、setnx key value

只有在 key 不存在时,才执行set操作

127.0.0.1:6379> setnx k1 v1
(integer) 1
127.0.0.1:6379> setnx k1 v1
(integer) 0
127.0.0.1:6379> 



3. 18、msetnx key1 value1 key2 value2 …

  1. 设置一个或多个 key-value 对,
  2. 当且仅当所有给定 key 都不存在,才执行msetnx操作
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> msetnx k1 v1 k2 v2 k3 v3
(integer) 0
127.0.0.1:6379> msetnx k11 v11 k21 v21 k31 v31
(integer) 1
127.0.0.1:6379> 


3. 19、setex key 过期时间 value

设置键值的同时,设置过期时间,单位秒。

127.0.0.1:6379> setex k1 10 v1
OK
127.0.0.1:6379> 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值