ToB企服应用市场:ToB评测及商务社交产业平台
标题:
[Redis][String][上]详细讲授
[打印本页]
作者:
星球的眼睛
时间:
2024-9-21 06:08
标题:
[Redis][String][上]详细讲授
0.前言
字符串范例是Redis最基础的数据范例,关于字符串必要特殊注意
:
Redis中所有的键的范例都是字符串范例
,⽽且其他⼏种数据结构也都是在字符串雷同基础上构建的
例如
:列表和聚集的元素范例是字符串范例
字符串范例的值实际可以是字符串,包罗
⼀般格式的字符串 -->
不仅仅可以存储文本数据
雷同JSON、XML格式的字符串
数字,可以是整型或者浮点型
甚⾄是⼆进制流数据,
例如
:图⽚、⾳频、视频等
⼀个字符串的最⼤值不能超过512MB
Redis内部存储字符串完全是按照⼆进制流的形式保存的
Redis是不处置惩罚字符集编码问题的
,客⼾端传⼊的下令中使⽤的是什么字符集编码,就存储什么字符集编码
1.常见下令
1.SET
功能
:将string范例的value设置到key中
如果key不存在,则创建新的键值对
如果key之前存在,则覆盖,⽆论原来的数据范例是什么(可能会改变原来的数据范例),之前关于此key的TTL也全部失效
语法
:SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
选项
:
EX seconds:使⽤秒作为单位设置key的逾期时间
PX milliseconds:使⽤毫秒作为单位设置key的逾期时间
NX:
只在key不存在时才进⾏设置
,即如果key之前已经存在,设置不执⾏
XX:
只在key存在时才进⾏设置
,即如果key之前不存在,设置不执⾏
相称于更新key的value
注意
:由于带选项的SET下令可以被SETNX, SETEX, PSETEX等下令代替,以是之后的版本中,Redis可能举行合并
返回值
:
如果设置乐成,返回OK
如果由于SET指定了NX或者XX但条件不满⾜,SET不会执⾏,并返回(nil)
时间复杂度
: O ( 1 ) O(1) O(1)
2.GET
功能
:获取key对应的value
如果key不存在,返回nil
如果value的数据范例不是string,会报错
语法
:GET key
返回值
:key对应的value,或者当key不存在时返回nil
时间复杂度
: O ( 1 ) O(1) O(1)
3.MSET && MGET
MSET
:
功能
:一次性设置多个key的值
语法
:MSET key value [key value ...]
返回值
:永远是OK
时间复杂度
: O ( 1 ) O(1) O(1)
MGET
:
功能
:⼀次性获取多个key的值
如果对应的key不存在或者对应的数据范例不是string,返回nil
语法
:`MGET key [key …]
返回值
:对应value的列表
时间复杂度
: O ( 1 ) O(1) O(1)
多次GET和单词MGET比较
:使用MGET/MSET可有效减少网络时间,性能较高
综上:
学会使⽤批量操纵,可以有效提⾼业务处置惩罚服从
注意
:每次批量操纵所发送的键的数目也不是⽆节制的,否则可能造成单⼀下令执⾏时间过⻓,导致Redis壅闭
4.SETNX && SETXX
SETNX
:
功能
:设置key-value,但只允许在key之前不存在的情况下
语法
:SETNX key value
时间复杂度
: O ( 1 ) O(1) O(1)
返回值
:1表⽰设置乐成,0表⽰没有设置
SETXX
:
功能
:设置key-value,但只允许在key之前存在的情况下
语法
:SETXX key value
时间复杂度
: O ( 1 ) O(1) O(1)
返回值
:1表⽰设置乐成,0表⽰没有设置
SET、SETNX、SETXX执⾏流程
2.计数下令
1.INCR
功能
:将key对应的string表⽰的数字
加⼀
如果key不存在,则视为key对应的value是0
如果key对应的string
不是⼀个整型或者范围超过了64位有符号整型,则报错
语法
:INCR key
返回值
:integer范例的加完后的数值
时间复杂度
: O ( 1 ) O(1) O(1)
2.INCRBY
功能
:将key对应的string表⽰的数字
加上对应的值
如果key不存在,则视为key对应的value是0
如果key对应的string
不是⼀个整型或者范围超过了64位有符号整型,则报错
语法
:INCRBY key increment
返回值
:integer范例的加完后的数值
时间复杂度
: O ( 1 ) O(1) O(1)
3.DECR
功能
:将key对应的string表⽰的数字
减⼀
。
如果key不存在,则视为key对应的value是0
如果key对应的string
不是⼀个整型或者范围超过了64位有符号整型,则报错
语法
:DECR key
时间复杂度
: O ( 1 ) O(1) O(1)
返回值
:integer范例的减完后的数值
4.DECYBY
功能
:将key对应的string表⽰的数字
减去对应的值
如果key不存在,则视为key对应的value是0
如果key对应的string
不是⼀个整型或者范围超过了64位有符号整型,则报错
语法
:DECRBY key decrement
时间复杂度
: O ( 1 ) O(1) O(1)
返回值
:integer范例的减完后的数值
5.INCRBYFLOAT
功能
:将key对应的string表⽰的
浮点数加上对应的值
,允许采⽤科学计数法表⽰浮点数
如果对应的值是
负数
,则
视为减去
对应的值
如果key不存在,则视为key对应的value是0
如果key对应的不是string,或者不是⼀个浮点数,则报错
语法
:INCRBYFLOAT key increment
时间复杂度
: O ( 1 ) O(1) O(1)
返回值
:加/减完后的数值
6.注意
Redis存储整数,是直接使用int范例存的,而
存储小数,本质上是当作字符串来存储
Redis的int比较方便算术运算
小数意味着每次举行算术运算,
都必要把字符串转成小数,举行运算,再把效果转回字符串保存
很多存储系统和编程语⾔内部使⽤
CAS
机制实现计数功能,会有⼀定的CPU开销
但在Redis中完全不存在这个问题,由于Redis是单线程架构,任何下令到了Redis服务端都要顺序执⾏
由于Redis处置惩罚下令的时候,是单线程模型,多个客户端同时针对同一个key举行INCR等操纵,不会引起"线程安全"问题
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4