Redis初窥:String操作常用命令
2017-12-17 20:13
531 查看
GET命令
命令语法:GETkey
命令用途:返回键 key 所关联的字符串值。
时间复杂度:O(1)
127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> get book // 当 book 不存在时,返回 nil (nil) 127.0.0.1:6379> hset book name "Mastering Redis" (integer) 1 127.0.0.1:6379> get book //当 book 不是字符串类型时,返回一个错误 (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379> set book "Mastering Redis" OK 127.0.0.1:6379> get book // 当 book 存在且是字符串类型时,返回其所关联的字符串值 "Mastering Redis"
SET命令
命令语法:SETkey value [EX seconds] [PX milliseconds] [NX|XX]
命令用途:设置键 key 所关联的字符串值为 value 。
命令参数:
EX seconds:设置键的生存时间为 seconds 秒,效果等同于 SETEX 。
PX milliseconds:设置键的生存时间为 milliseconds 毫秒,效果等同于 PSETEX 。
NX:只在键不存在时,才对键进行设置操作,效果等同于 SETNX 。
XX:只在键已经存在时,才对键进行设置操作。
时间复杂度:O(1)
127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> set book "Mastering Redis" ex 5 nx // 当 book 不存在时才为其设置值,并设定键的生存时间为5秒 OK 127.0.0.1:6379> set book "Mastering MongoDB" px 5000 // 为 book 设置值,并设定键的生存时间为5000毫秒 OK 127.0.0.1:6379> set book "A Long Story" // 为 book 设置值 OK 127.0.0.1:6379> set book "Three Stones" xx // 当 book 存在时才为其设置值 OK
GETSET命令
命令语法:GET key命令用途:将给定键 key 的值设为新值(new value) ,并返回键 key 的旧值(old value)。
时间复杂度:O(1)
127.0.0.1:6379> set book "Mastering Redis" // 为 book 设置旧值 OK 127.0.0.1:6379> getset book "Three Stones" // 为 book 设置新值,并返回旧值 "Mastering Redis" 127.0.0.1:6379> get book // 获取 book 的新值 "Three Stones"
SETNX命令
命令语法:SETNXkey value
命令用途:当且仅当键 key 不存在时,将键 key 的值设为 value 。
时间复杂度:O(1)
127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> setnx book "Mastering Redis" // 当 book 不存在时为其设置值,设置成功 (integer) 1 127.0.0.1:6379> get book "Mastering Redis" 127.0.0.1:6379> setnx book "MongoDB Basic" // 当 book 存在时再为其设置值,设置失败 (integer) 0 127.0.0.1:6379> get book "Mastering Redis"
SETEX命令
命令语法:SETEXkey seconds value
命令用途:将值 value 关联到键 key ,并将键 key 的生存时间设为 seconds 秒。
时间复杂度:O(1)
127.0.0.1:6379> setex book 5 "Mastering Redis" // 为 book 设置值,并将其生存时间设为 5 秒 OK 127.0.0.1:6379> get book // 5 秒之内能够获取到 book 的值 "Mastering Redis" 127.0.0.1:6379> get book // 5 秒之后再获取 book 的值时,返回 nil (nil)
PSETEX命令
命令语法:PSETEXkey milliseconds value
命令用途:将值 value 关联到键 key ,并将键 key 的生存时间设为 milliseconds 毫秒。
时间复杂度:O(1)
127.0.0.1:6379> psetex book 5000 "Mastering Redis"// 为 book 设置值,并将其生存时间设为 5000 毫秒 OK 127.0.0.1:6379> get book // 5000 毫秒之内能够获取到 book 的值 "Mastering Redis" 127.0.0.1:6379> get book // 5000 毫秒之后再获取 book 的值时,返回 nil (nil)
GETRANGE/SUBSTR命令
命令语法:GETRANGE/SUBSTRkey start end
命令用途:截取并返回键 key 字符串值从 start 到 end 之间的自字符串(包括 start 和 end 在内)。
时间复杂度:O(N), N 为要返回的字符串的长度。
127.0.0.1:6379> set book "Mastering Redis" OK 127.0.0.1:6379> getrange book 0 5 "Master" 127.0.0.1:6379> getrange book -5 -1 "Redis" 127.0.0.1:6379> getrange book 0 -7 "Mastering"
SETRANGE命令
命令语法:SETRANGEkey offset value
命令用途:从偏移量 offset 开始,用值 value 替换给定键 key 的字符串值。
时间复杂度:O(M), M 为值 value 的长度。
127.0.0.1:6379> set book "Mastering Redis" OK 127.0.0.1:6379> setrange book 10 MongoDB //从偏移量 10 开始替换字符串值 (integer) 17 127.0.0.1:6379> get book "Mastering MongoDB" 127.0.0.1:6379> setrange book 20 2017 //空白处被"\x00"填充 (integer) 24 127.0.0.1:6379> get book "Mastering MongoDB\x00\x00\x002017"
APPEND命令
命令语法:APPENDkey value
命令用途:将值 value 追加到键 key 字符串值的末尾。
时间复杂度:O(1)
127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> append book "Mastering" // 当 book 不存在时 (integer) 9 127.0.0.1:6379> append book " Redis" // 当 book 存在时 (integer) 15 127.0.0.1:6379> get book "Mastering Redis"
STRLEN命令
命令语法:STRLENkey
命令用途:返回键 key 字符串值的长度。
时间复杂度:O(1)
127.0.0.1:6379> exists book (integer) 0 127.0.0.1:6379> strlen book // 当 book 不存在时,返回 0 (integer) 0 127.0.0.1:6379> set book "Mastering Redis" OK 127.0.0.1:6379> strlen book (integer) 15
INCR命令
命令语法:INCRkey
命令用途:将键 key 中储存的数字值增1。
时间复杂度:O(1)
127.0.0.1:6379> exists count (integer) 0 127.0.0.1:6379> incr count // 当 count 不存在时,会先将其值初始化为 0,再执行INCR操作 (integer) 1 127.0.0.1:6379> get count "1" 127.0.0.1:6379> incr count // 将 count 的值加 1 (integer) 2 127.0.0.1:6379> get count "2"
INCRBY命令
命令语法:INCRBYkey increment
命令用途:将键 key 中储存的数字值增加 increment 。
时间复杂度:O(1)
127.0.0.1:6379> exists count (integer) 0 127.0.0.1:6379> incrby count 10 // 当 count 不存在时,会先将其值初始化为 0,再执行INCRBY操作 (integer) 10 127.0.0.1:6379> get count "10" 127.0.0.1:6379> incrby count 5 // 将 count 的值加 5 (integer) 15 127.0.0.1:6379> get count "15"
INCRBYFLOAT命令
命令语法:INCRBYFLOATkey increment
命令用途:为键 key 中储存的值加上浮点数增量 increment 。
时间复杂度:O(1)
127.0.0.1:6379> exists price (integer) 0 127.0.0.1:6379> incrbyfloat price 0.5 // 当 price 不存在时,会先将其值初始化为 0,再执行INCRBYFLOAT操作 "0.5" 127.0.0.1:6379> get price "0.5" 127.0.0.1:6379> incrbyfloat price 5e-1 // 将 price 的值加 5e-1即0.5 "1" 127.0.0.1:6379> get price "1" 127.0.0.1:6379> incrbyfloat price 1.00000000 // 小数末尾无用的 0 会自动被忽略掉 "2" 127.0.0.1:6379> get price "2"
DECR命令
命令语法:DECRkey
命令用途:将键 key 中储存的数字值减1。
时间复杂度:O(1)
127.0.0.1:6379> exists count (integer) 0 127.0.0.1:6379> decr count // 当 count 不存在时,会先将其值初始化为 0,再执行DECR操作 (integer) -1 127.0.0.1:6379> get count "-1" 127.0.0.1:6379> decr count // 将 count 的值减 1 (integer) -2 127.0.0.1:6379> get count "-2"
DECRBY命令
命令语法:DECRBYkey decrement
命令用途:将键 key 所储存的数字值减去 decrement 。
时间复杂度:O(1)
127.0.0.1:6379> exists count (integer) 0 127.0.0.1:6379> decrby count 10 // 当 count 不存在时,会先将其值初始化为 0,再执行DECRBY操作 (integer) -10 127.0.0.1:6379> get count "-10" 127.0.0.1:6379> decrby count 5 // 将 count 的值减 5 (integer) -15 127.0.0.1:6379> get count "-15"
MGET命令
命令语法:MGETkey1 [key2 ...]
命令用途:返回所有(一个或多个)给定键 key 的值。
时间复杂度:O(N) , N 为给定 key 的数量。
127.0.0.1:6379> set book:1 "Mastering Redis" OK 127.0.0.1:6379> set book:2 "MongoDB Basic" OK 127.0.0.1:6379> mget book:1 book:2 book:3 //不存在的 book:3 返回 nil 1) "Mastering Redis" 2) "MongoDB Basic" 3) (nil)
MSET命令
命令语法:MSETkey1 value1 [key2 value2 ...]
命令用途:同时设置一个或多个 key-value 键值对。
时间复杂度:O(N), N 为要设置的键 key 的数量。
127.0.0.1:6379> mset book:1 "Mastering Redis" book:2 "MongoDB Basic" OK 127.0.0.1:6379> mget book:1 book:2 1) "Mastering Redis" 2) "MongoDB Basic"
MSETNX命令
命令语法:MSETNXkey1 value1[key2 value2 ...]
命令用途:当且仅当所有给定 key 都不存在时,设置一个或多个 key-value 键值对。
时间复杂度:O(N), N 为要设置的键 key 的数量。
127.0.0.1:6379> exists book:1 book:2 book:3 (integer) 0 127.0.0.1:6379> msetnx book:1 "Mastering Redis" book:2 "MongoDB Basic" (integer) 1 127.0.0.1:6379> mget book:1 book:2 book:3 1) "Mastering Redis" 2) "MongoDB Basic" 3) (nil) // MSETNX 是原子性的,由于 book:1 已经存在,从而导致 book:1 和 book:3 两个字段都没被设置 127.0.0.1:6379> msetnx book:1 "Hello World Redis" book:3 "Thinking In Java" (integer) 0 127.0.0.1:6379> mget book:1 book:2 book:3 1) "Mastering Redis" 2) "MongoDB Basic" 3) (nil)
GETBIT命令
命令语法:GETBITkey offset
命令用途:获取键 key 所储存的字符串值指定偏移量上的位(bit)。
时间复杂度:O(1)
127.0.0.1:6379> exists bits (integer) 0 127.0.0.1:6379> getbit bits 100 // 对不存在的 key 或者不存在的 offset 进行 GETBIT, 返回 0 (integer) 0 127.0.0.1:6379> setbit bits 100 1 (integer) 0 127.0.0.1:6379> getbit bits 100 (integer) 1
SETBIT命令
命令语法:SETBITkey offset value
命令用途:设置或清除键 key 所储存的字符串值指定偏移量上的位(bit)。
时间复杂度:O(1)
127.0.0.1:6379> exists bits (integer) 0 127.0.0.1:6379> setbit bits 100 1 // 设置偏移量 100 的位值为 1 (integer) 0 127.0.0.1:6379> getbit bits 100 (integer) 1 127.0.0.1:6379> setbit bits 100 0 // 清除偏移量 100 的位上的值 (integer) 1 127.0.0.1:6379> getbit bits 100 (integer) 0 127.0.0.1:6379> getbit bits 200 // 未被设置值的 bit 位默认被初始化为 0 (integer) 0
BITCOUNT命令
命令语法:BITCOUNTkey [start] [end]
命令用途:返回键 key 所储存的字符串值中被设置为 1 的比特位的数量。
时间复杂度:O(N)
127.0.0.1:6379> exists bits (integer) 0 127.0.0.1:6379> bitcount bits // 当 bits 不存在时,返回 0 (integer) 0 127.0.0.1:6379> setbit bits 0 1 // 0001 (integer) 0 127.0.0.1:6379> bitcount bits (integer) 1 127.0.0.1:6379> setbit bits 3 1 // 1001 (integer) 0 127.0.0.1:6379> bitcount bits (integer) 2
BITOP命令
命令语法:BITOPoperation destkey key1 [key2 ...]
命令用途:对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
命令参数:
AND :对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
OR :对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
XOR :对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
NOT :对给定 key 求逻辑非,并将结果保存到 destkey 。
时间复杂度:O(N)
127.0.0.1:6379> exists bits:1 bits:2 (integer) 0 127.0.0.1:6379> setbit bits:1 0 1 // 0001 (integer) 0 127.0.0.1:6379> setbit bits:1 3 1 // 1001 (integer) 0 127.0.0.1:6379> setbit bits:2 0 1 // 0001 (integer) 0 127.0.0.1:6379> setbit bits:2 1 1 // 0011 (integer) 0 127.0.0.1:6379> bitop and bits:result:1 bits:1 bits:2 // bits:result:1 = 0001 (integer) 1 127.0.0.1:6379> bitcount bits:result:1 (integer) 1 127.0.0.1:6379> getbit bits:result:1 0 (integer) 1 127.0.0.1:6379> bitop or bits:result:2 bits:1 bits:2 // bits:result:2 = 1011 (integer) 1 127.0.0.1:6379> bitcount bits:result:2 (integer) 3 127.0.0.1:6379> getbit bits:result:2 2 (integer) 0 127.0.0.1:6379> bitop xor bits:result:3 bits:1 bits:2 // bits:result:3 = 1010 (integer) 1 127.0.0.1:6379> bitcount bits:result:3 (integer) 2 127.0.0.1:6379> getbit bits:result:3 1 (integer) 1 127.0.0.1:6379> getbit bits:result:3 3 (integer) 1 127.0.0.1:6379> bitop not bits:result:4 bits:1 // bits:result:4 = 11110110 (integer) 1 127.0.0.1:6379> bitcount bits:result:4 (integer) 6 127.0.0.1:6379> getbit bits:result:4 1 (integer) 1 127.0.0.1:6379> getbit bits:result:4 0 (integer) 0 127.0.0.1:6379> getbit bits:result:4 3 (integer) 0 127.0.0.1:6379> getbit bits:result:4 7 (integer) 1 127.0.0.1:6379> getbit bits:result:4 8 (integer) 0
相关文章推荐
- Redis初窥:List操作常用命令
- Redis常用命令-String类型操作
- Redis初窥:Hash操作常用命令
- Redis常用数据类型介绍、使用场景及其操作命令
- Redis——常用命令操作
- Redis常用的命令(二)------key的基本操作
- Redis缓存命令整理—String字符串操作命令
- 初识redis之常用String与Hash命令
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安装redis及redis的常用命令和操作
- Redis常用命令(2)——String
- redis 对string的操作命令
- Redis命令学习-string类型操作
- Redis从入门到放弃 之 常用命令和基本数据类型操作
- StringRedisTemplate常用操作
- Redis常用数据类型介绍、使用场景及其操作命令
- StringRedisTemplate常用操作
- Redis常用操作命令
- redis常用操作命令总结
- Redis常用数据类型介绍、使用场景及其操作命令
- redis基本数据类型和常用命令操作