redis的存储模式

redis数据库数据存储模式是基于键值基本存储原理的基础上,进行细化分类,构建了具有自身特点的数据结构类型

redis提供的数据结构类型已经达到了8

字符串string、列表list、集合set、散列表hash、有序集合Sorted set 、位图Bitmap、Hyperloglog、地理空间Geospatial

redis存储模式之字符串string

字符串内容是二进制安全的,可以把数字、文本、图片、视频等存在value中

1.键命名要容易阅读,方便维护,键名不要过长,会影响执行效率

2.值最大长度不要超过512M

3.键可以用A:adress方式增加键的提示信息

基本的字符串操作命令:

Set:为指定一个键设置对应的值,若值已经存在则覆盖  set 键1 "值1”

MSet:对多个建设置对应的值,若值已经存在则覆盖    eg:mset 键1 值1  键2 值2

返回值总是OK,该命令不会出现执行失败

MSetNX:对多个键设置任意的值,该命令不予许指定的任意一个键已经在内存中建立,如果有一个已经建立,则该命令执行失败。他是原子操作,所执行的命令内容要多都成功,要么都失败

使用于通过设置不同的键来表示一个唯一的对象的不同字段

eg:msetNX key1 value1 key2 value2  key3 value3   成功返回1,失败返回0

PS:

NX:如果指定的键不存在,仅建立键名

XX:指定的键存在时才能设置对应的值

Get: 指定需要读取字符串的键  Get key

指定键不存在时,返回nil

PS:若get命令得到的结果未十六进制的值(一般在含中文值情况下出现),可以通过启动redis-cli时在其后面加上--raw参数解决

MGet:指定需要读取字符串的键,键允许多key的指定

返回所有指定键对应的值,用列表形式显示。对于不是string值或者不存在的键,都返回nil

eg:mset key1  key2 key3

Del:指定需要删除的字符串的键,允许一次删除多个

返回值:被删除字符串的个数

还可以删除其他类型的数据结构,如列表、集合、散列等

eg:del key1 key2

StrLen:指定需要获取长度的字符串键

返回值:返回字符串长度,如果值为非字符串,则返回错误信息,如果键不存在,则返回0

eg: strlen key1

修改字符串操作命令:

Append:追加字符串,当字符串指定键存在时,把新字符串追加到现有值的后面;若键不存在,则建立新的字符串

append key  value

GetRange:得到指定范围的字符串的子字符串

redis 2.0以前截取字符串是用的substr

getRange key start  end

getrange key1  0  -1

-1代表字符串最后一个位置,0代表字符串第一个位置

GetSet:得到指定字符串键的旧值,然后为键设置新值

getset key value

value为键设置的新值,返回值是返回之前的旧值,若指定键不存在则返回nil

主要应用场景为实现支持重置的计数功能,可与incr命令配合使用

SetRange:替换指定字符串的值

setrange key offset value

offset为字符串需要修改的开始位置,value为新的子串值,如果offset位置超过了指定字符串的长度,超出部分补0

eg: setrange a “小心”

get  a

"\x00\x00\x00小心"

一个\x00代表一个0

ps:

由于redis中字符串大小限制在512M以内,所以offset不能超过536870911位

当指定的键在没有值的情况下,在指定位置设置新值,redis需要立即分配内存,这有可能会导致服务阻塞现象的出现。新建立值长度越大需要消耗的时间越多,一般消耗时间在几百毫秒到几毫秒之间

修改数字值的操作命令

redis为字符串值为数字的数据提供了专门的修改操作命令

Decr :对整数做原子减1操作

decr key

该字符串的值必须为整型,若key不存在,则新建键,且值设置为0

返回值:返回减1后的值,若指定的键的字符串值存储的是非整型数据,则该命令返回错误信息

set key1 10

decr  key1

(integer) 9

ps:

decr命令最大支持64位有符号的整型数字 ,其实是decrease(减少)的缩写

decrby: 对整数做原子减指定数操作

decrby  key  decrement

decrement为需要减少的整数数量,若key不存在,则新建键,且值设置为0

返回值:返回减少对应数量的值

eg:set key1 10

decrby key1 5

(integer) 5

incr:对整数做原子加1操作

ps:

incr命令最大支持64位有符号整数,原子递增操作最常用的使用场景是计数器,特定场景的限速器

incrby:对整数做原子加指定数操作

incrbyFloat:对浮点数做原子加指定数操作

incrbyfloat key decremnet

键所对应的值必须是浮点数,并且存在在string中,decrement为需要增加的浮点数

返回值:返回值增加的浮点数值

ps:

包含如下任意一个条件,该命令将返回错误信息

key包含非法值(不是一个string)

当前的值增加指定数后,不能解析为一个双精度的浮点数(超出精度范围),无论个计算内部精度如何,输出精度都固定为小数点后17位

 

posted @ 2020-10-17 17:15  间歇性偷懒的疯子  阅读(621)  评论(0编辑  收藏  举报