新网站怎么做才会被收录,手机如何制作网站和网页,120平办公室装修设计,乐陵德州seo公司String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型#xff0c;在讲解命令之前#xff0c;我们…String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型在讲解命令之前我们先讨论以下 Redis 中的 String 类型关于 Redis 中的 String 类型要注意三点 ① Redis 中的 “键” 都是 String 类型而 Redis 中的 value 是多种类型的而在这多种中类型中它们存储的元素类型也都是 String 类型比如list 类型set 类型存储的元素值是 String 类型。
② 如果 value 是 String 类型它可以是一般的字符串也可以是 JSON、XML 格式的字符串也可以是 “数字”二进制流数据例如图片但是这里的字符串最好不要太大否则的话读取时间会很长。
③ Redis 中 String 类型数据的存储都是按照**“二进制数据”**存储的并且Redis 是不处理字符集编码问题的客户端传入的命令中使用的是什么字符集编码存储时就是什么字符集编码。
下面就来简单看一下几个常用的命令
set 命令
设置 key 和 value在不指定选型的默认情况下如果指定的 key 存在的话则更新 value 值如果 key 不存在的话则存储 key 和 value 语法set key [expiration EX seconds|PX milliseconds] [NX|XX] 选项解释 EX seconds 设置 key 的过期时间单位是秒 PX milliseconds设置 key 的过期时间单位是毫秒 NX如果 key 不存在则存储 key 和 value如果 key 存在则不能存储 XX如果 key 存在则存储如果 key 不存在则不存储 时间复杂度O(1)
返回值ok
操作演示 注意上述我存储的 key 和 value 都是字符串类型而在 Redis 中字符串类型加不加引号都是可以的以及加双引号或单引号也都不会出错。
get 命令
根据 key 获取 value如果 value 的数据类型不是 String 则会报错 语法get key 时间复杂度O(1)
返回值key 对应的value如果key不存在返回 nil
操作演示 mset 命令
一次设置多个 key 语法mset key [key……] 时间复杂度O(k)这里的 k 表示 key 的个数
返回值ok
操作演示 mget 命令
一次获取多个 key 的 value 语法mget key [key……] 时间复杂度O(k)
返回值key 对应的 value
操作演示 get 和 mget 的区别
要记住Redis 的架构是“客户端-服务器”架构每一次传入命令都是向服务器发送一次请求是通过网络传输的而网络传输的速度也是比较慢的并且也可能会因为一些因素导致传输失败毕竟网上有一句话是这样讲的再牛的网络也敌不过挖掘机的一铲子所以如果要设置多个key 或 获取多个 key 使用 get 和 mget 所发送请求的个数就相差很大如下图 所以mget / mset 这种批量操作可以有效的节约网络时间但需要注意的时批量操作时指定的 key 不要太多否则的话容易导致 Redis 阻塞。
incr 命令
将 key 对应的 String 表示的数字加1如果 key 不存在则设置key并且认为 key 对应的 vlaue 的值为 0如果key 所对应的 value 的值不是一个数字或者数字的范围超过了 64位有符号的整型则报错 语法incr key 时间复杂度O(1)
返回值成功加完后的数值
操作演示 incrby 命令
将 key 对应的 String 表示的数字加上指定的 n如果 key 不存在则设置key并且认为 key 对应的 vlaue 的值为 0如果key 所对应的 value 的值不是一个数字或者数字的范围超过了 64位有符号的整型则报错 语法incrby key n 时间复杂度O(1)
返回值成功添加后的值
操作演示 decr 命令
将 key 对应的 String 表示的数字减 1如果 key 不存在则设置key并且认为 key 对应的 vlaue 的值为 0如果key 所对应的 value 的值不是一个数字或者数字的范围超过了 64位有符号的整型则报错 语法decr key 时间复杂度O(1)
返回值成功减去后的值
操作演示 decrby 命令
decrby 命令同样也是减操作只不过是减去我们指定的数值和上面的 incrby 命令的操作方式一样这里就不再演示。
incrbyfloat 命令
incrbyfloat 命令是针对 value /- 小数操作方式同样和上面的加减命令操作方式一样这里也不再演示。
以上一组命令都是对value是数字时进行操作的很多存储系统和编程语⾔内部使⽤CAS机制实现计数功能会有⼀定的CPU开销但在Redis中完全不存在这个问题因为Redis是单线程架构任何命令到了Redis服务端都要顺序执⾏。
append 命令
如果 key 已经存在并且 value 是字符串那么 append 命令会将指定的value值拼接到字符串后面如果不存在用法和set一样就会添加一个新的元素 语法append key value 时间复杂度O(1)
返回值字符串的长度
操作演示 getrange 命令
获取 key 对应的字符中的子串 语法getrange key start end start左区间(闭) end右区间(闭) 并且可以使用负数表示倒数-1 表示最后一个位置的元素-2 表示倒数第二个位置的元素 时间复杂度O(k)k 是[start,end]区间的长度
返回值返回指定位置的字串
操作演示 setrange 命令
覆盖字符串的一部分 语法setrange key offset value offset指定需要覆盖的开始位置 value新的字符串 时间复杂度O(k)k 表示 value 的长度
返回值替换后的字符串的长度
操作演示