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"