Redis系列命令更新--Redis字符串命令

1、Redis SET命令

(1)**说明:**用于设置给定key的值;如果key已经存储其他值,SET就覆写旧值,且无视类型;

(2)**语法:**redis 127.0.0.1:6379> SET KEY_NAME VALUE

(3)实例:

对不存在的键进行设置

redis 127.0.0.1:6379> SET key "value"

OK

redis 127.0.0.1:6379> GET key"value"

对已存在的键进行设置

redis 127.0.0.1:6379> SET key "new-value"

OK

redis 127.0.0.1:6379> GET key"new-value"

2、Redis Get命令:

(1)**说明:**用于获取指定key的值;如果key不存在,返回nil;如果key储存的值不是字符串类型,返回一个错误;

(2)**语法:**redis 127.0.0.1:6379> GET KEY_NAME;返回key的值,如果key不存在时,返回nil;如果key不是字符串类型,那么返回一个错误

(3)实例:

对不存在的 key 或字符串类型 key 进行 GET

redis> GET db(nil)

redis> SET db redis

OK

redis> GET db"redis"

对不是字符串类型的 key 进行 GET

redis> DEL db(integer) 1

redis> LPUSH db redis mongodb mysql(integer) 3

redis> GET db(error) ERR Operation against a key holding the wrong kind of value

3、Redis Getrange命令

(1)**说明:**Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

(2)**语法:**redis 127.0.0.1:6379> GETRANGE KEY_NAME start end;截取得到的子字符串;

(3)**实例:**首先,设置 mykey 的值并截取字符串。

redis 127.0.0.1:6379> SET mykey "This is my test key"

OK

redis 127.0.0.1:6379> GETRANGE mykey 0 3"This"

redis 127.0.0.1:6379> GETRANGE mykey 0 -1"This is my test key"

4、Redis Getset命令

(1)**说明:**Redis Getset命令用于设置指定key的值,并返回key的旧值

(2)**语法:**redis 127.0.0.1:6379> GETSET KEY_NAME VALUE;返回给定key的旧值;当key没有旧值时,即key不存在时,返回nil;

(3)实例:

redis> GETSET db mongodb # 没有旧值,返回 nil(nil)

redis> GET db"mongodb"

redis> GETSET db redis # 返回旧值 mongodb"mongodb"

redis> GET db"redis"

5、Redis Getbit命令:

(1)**说明:**Redis Getbit命令用于对key所储存的字符串值,获取指定偏移量上的位(bit)

(2)**语法:**redis 127.0.0.1:6379> GETBIT KEY_NAME OFFSET;返回字符串值指定偏移量上的位;当偏移量OFFSET比字符串值的长度大,或者key不存在时,返回0

(3)实例:

对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0

redis> EXISTS bit(integer) 0

redis> GETBIT bit 10086(integer) 0

对已存在的 offset 进行 GETBIT

redis> SETBIT bit 10086 1(integer) 0

redis> GETBIT bit 10086(integer) 1

6、Redis Mget命令

(1)**说明:**Redis Mget命令返回所有(一个或多个)给定key的值;如果给定的key里面,有某个key不存在,那么这个key返回特殊值nil

(2)**语法:**redis 127.0.0.1:6379> MGET KEY1 KEY2 .. KEYN;返回一个包含所有给定key值的列表

(3)实例:

redis 127.0.0.1:6379> SET key1 "hello"

OK

redis 127.0.0.1:6379> SET key2 "world"

OK

redis 127.0.0.1:6379> MGET key1 key2 someOtherKey1) "Hello"2) "World"3) (nil)

7、Redis Setbit命令

(1)**说明:**用于对key所存储的字符串值,设置或清除指定偏移量上的位(bit);

(2)**语法:**redis 127.0.0.1:6379> Setbit KEY_NAME OFFSET;返回指定偏移量原来储存的位

(3)实例:

redis> SETBIT bit 10086 1(integer) 0

redis> GETBIT bit 10086(integer) 1

redis> GETBIT bit 100 # bit 默认被初始化为 0(integer) 0

8、Reids Setex命令

(1)**说明:**Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

(2)**语法:**redis 127.0.0.1:6379> SETEX KEY_NAME TIMEOUT VALUE;设置成功时返回OK

(3)实例:

redis 127.0.0.1:6379> SETEX mykey 60 redis

OK

redis 127.0.0.1:6379> TTL mykey60

redis 127.0.0.1:6379> GET mykey"redis

实际执行情况:

9、Redis Setnx命令:

(1)**说明:**Redis Setnx(SET if Not eXists)命令在指定的key不存在时,为key设置指定的值;

(2)**语法:**redis 127.0.0.1:6379> SETNX KEY_NAME VALUE;设置成功,返回1;设置失败,返回0

(3)实例:

redis> EXISTS job # job 不存在(integer) 0

redis> SETNX job "programmer" # job 设置成功(integer) 1

redis> SETNX job "code-farmer" # 尝试覆盖 job ,失败(integer) 0

redis> GET job # 没有被覆盖"programmer"

10、Redis Setrange命令

(1)**说明:**Redis Setrange命令用指定的字符串覆盖给定key所储存的字符串值,覆盖的位置从偏移量offset开始

(2)**语法:**redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE;返回被修改后的字符串长度

(3)实例:

redis 127.0.0.1:6379> SET key1 "Hello World"

OK

redis 127.0.0.1:6379> SETRANGE key1 6 "Redis"(integer) 11

redis 127.0.0.1:6379> GET key1"Hello Redis"

11、Redis Strlen 命令

**(1)说明:**Redis Strlen 命令用于获取指定key所储存的字符串值的长度;当key储存的不是字符串值时,返回一个错误;

**(2)语法:**redis 127.0.0.1:6379> STRLEN KEY_NAME;返回字符串值的长度;当key不存在时,返回0

(3)实例:

获取字符串的长度

redis> SET mykey "Hello world"

OK

redis> STRLEN mykey(integer) 11

不存在的 key 长度为 0

redis> STRLEN nonexisting(integer) 0

12、Redis Mset命令

**(1)说明:**Redis Mset命令同时设置一个或多个key-value对

**(2)语法:**redis 127.0.0.1:6379> MSET key1 value1 key2 value2 .. keyN valueN ;总是返回OK

(3)实例:

redis 127.0.0.1:6379> MSET key1 "Hello" key2 "World"

OK

redis 127.0.0.1:6379> GET key1"Hello"

redis 127.0.0.1:6379> GET key21) "World"

13、Redis Msetnx命令

(1)**说明:**Redis Msetnx命令用于所有给定key都不存在时,同时设置一个或多个key-value对

(2)语法:redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN ;当所有key都成功设置,返回1,;如果所有给定key都设置失败(至少有一个key已经存在),那么返回0;

(3)实例:

对不存在的 key 进行 MSETNX

redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"(integer) 1

redis> MGET rmdbs nosql key-value-store1) "MySQL"2) "MongoDB"3) "redis"

MSET 的给定 key 当中有已存在的 key

redis> MSETNX rmdbs "Sqlite" language "python" # rmdbs 键已经存在,操作失败(integer) 0

redis> EXISTS language # 因为 MSET 是原子性操作,language 没有被设置(integer) 0

redis> GET rmdbs # rmdbs 也没有被修改"MySQL"

14、Redis Psetex命令

(1)**说明:**Redis Psetex命令以毫秒为单位设置key的生存时间

(2)**语法:**redis 127.0.0.1:6379> PSETEX key1 EXPIRY_IN_MILLISECONDS value1 ;设置成功时返回OK

(3)实例:

redis 127.0.0.1:6379> PSETEX mykey 1000 "Hello"

OK

redis 127.0.0.1:6379> PTTL mykey999

redis 127.0.0.1:6379> GET mykey1) "Hello"

15、Redis Incr命令

(1)**说明:**Redis Incr命令将key中储存的数字之增一;如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误;本操作的值限制在64位(bit)有符号数字表示之内

(2)语法 **:**redis 127.0.0.1:6379> INCR KEY_NAME ;返回执行INCR命令之后key的值

(3)实例:

redis> SET page_view 20

OK

redis> INCR page_view(integer) 21

redis> GET page_view # 数字值在 Redis 中以字符串的形式保存"21"

16、Redis Incrby命令

(1)**说明:**Redis Incrby命令将key中储存的数字加上指定的增量值;如果key不存在,那么key的值会被初始化为0,然后再执行INCRBY命令;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误

(2)**语法:**redis 127.0.0.1:6379> INCRBY KEY_NAME INCR_AMOUNT;返回加上指定的增量值之后,key的值

(3)实例:

key 存在且是数字值

redis> SET rank 50

OK

redis> INCRBY rank 20(integer) 70

redis> GET rank"70"

key 不存在时

redis> EXISTS counter(integer) 0

redis> INCRBY counter 30(integer) 30

redis> GET counter"30"

key 不是数字值时

redis> SET book "long long ago..."

OK

redis> INCRBY book 200(error) ERR value is not an integer or out of range

17、Redis Incrbyfloat命令

(1)**说明:**Redis Incrbyfloat命令为key中所储存的值加上指定的浮点数增量值;如果key不存在,那么INCRBYFLOAT会先将key的值设为0,再执行加法操作;

(2)语法:redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT;返回执行命令之后key的值

(3)实例:

值和增量都不是指数符号

redis> SET mykey 10.50

OK

redis> INCRBYFLOAT mykey 0.1"10.6"

值和增量都是指数符号

redis> SET mykey 314e-2

OK

redis> GET mykey # 用 SET 设置的值可以是指数符号"314e-2"

redis> INCRBYFLOAT mykey 0 # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号"3.14"

可以对整数类型执行

redis> SET mykey 3

OK

redis> INCRBYFLOAT mykey 1.1"4.1"

后跟的 0 会被移除

redis> SET mykey 3.0

OK

redis> GET mykey # SET 设置的值小数部分可以是 0"3.0"

redis> INCRBYFLOAT mykey 1.000000000000000000000 # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数"4"

redis> GET mykey"4"

18、Redis Decr命令

(1)**说明:**Redis Decr命令将key中储存的数字值减1;如果key不存在,那么key的值会先被初始化为0,然后再执行DECR操作;如果值包含错误的类型,或字符串的值不能表示为数字,那么返回一个错误;本操作的值限制在64位(bit)有符号数字表示之内;

(2)**语法:**redis 127.0.0.1:6379> DECR KEY_NAME

(3)实例:

对存在的数字值 key 进行 DECR

redis> SET failure_times 10

OK

redis> DECR failure_times(integer) 9

对不存在的 key 值进行 DECR

redis> EXISTS count(integer) 0

redis> DECR count(integer) -1

对存在但不是数值的 key 进行 DECR

redis> SET company YOUR_CODE_SUCKS.LLC

OK

redis> DECR company(error) ERR value is not an integer or out of range

19、Redis Decrby命令

(1)**说明:**Redis Decrby命令将key所储存的值减去指定的减量值;如果key不存在,那么key的值会先被初始化为0,然后再执行DECRBY操作;如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误;本操作的值限制在64位(bit)有符号数字表示之内

(2)**语法:**redis 127.0.0.1:6379> DECRBY KEY_NAME DECREMENT_AMOUNT;返回减去指定减量值后,key的值

(3)实例:

对已存在的 key 进行 DECRBY

redis> SET count 100

OK

redis> DECRBY count 20(integer) 80

对不存在的 key 进行DECRBY

redis> EXISTS pages(integer) 0

redis> DECRBY pages 10(integer) -10

20、Redis Append命令

(1)**说明:**Redis Append命令用于指定的key追加值;如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾;如果key不存在,APPEND就简单地将给定key设置为value,就像执行SET key value一样

(2)**语法:**redis 127.0.0.1:6379> APPEND KEY_NAME NEW_VALUE;返回追加指定值之后,key中字符串的长度;

(3)实例:

对不存在的 key 执行 APPEND

redis> EXISTS myphone # 确保 myphone 不存在(integer) 0

redis> APPEND myphone "nokia" # 对不存在的 key 进行 APPEND ,等同于 SET myphone "nokia"(integer) 5 # 字符长度

对已存在的字符串进行 APPEND

redis> APPEND myphone " - 1110" # 长度从 5 个字符增加到 12 个字符(integer) 12

redis> GET myphone"nokia - 1110"

相关推荐
运维小文22 分钟前
服务器硬件介绍
运维·服务器·计算机网络·缓存·硬件架构
李少兄32 分钟前
解决Spring Boot整合Redis时的连接问题
spring boot·redis·后端
日里安1 小时前
8. 基于 Redis 实现限流
数据库·redis·缓存
EasyCVR1 小时前
ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案
服务器·网络·数据库·音视频
Elastic 中国社区官方博客1 小时前
使用真实 Elasticsearch 进行更快的集成测试
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·集成测试
明月与玄武2 小时前
关于性能测试:数据库的 SQL 性能优化实战
数据库·sql·性能优化
PGCCC3 小时前
【PGCCC】Postgresql 存储设计
数据库·postgresql
PcVue China5 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
魔道不误砍柴功7 小时前
简单叙述 Spring Boot 启动过程
java·数据库·spring boot
jerry6097 小时前
7天用Go从零实现分布式缓存GeeCache(改进)(未完待续)
分布式·缓存·golang