Redis-String

栏目: IT技术 · 发布时间: 4年前

内容简介:本文章记录Redis中String数据类型的笔记PS:value最多存512MB上限,Redis字符串类型用于场景这里举几个栗子,缓存,计数器(播放量和浏览量等),分布式锁等等。String类型的内部编码有三个分别是

本文章记录 Redis 中String数据类型的笔记

  • 结构
  • 内部编码
  • 命令和栗子

结构

key value
hello world(字符串)
counter 1(整型Redis这里会字符串类型转换)
bits 10111101(二进制在位图有用到)
data JSON数据" "

PS:value最多存512MB上限,Redis字符串类型用于场景这里举几个栗子,缓存,计数器(播放量和浏览量等),分布式锁等等。

内部编码

String类型的内部编码有三个分别是 intrawembstr ,下面介绍一下它们:

  • int编码 :保存 long 型的64位有符号整数
  • raw编码 :保存长度小于44字节的字符串
  • embstr编码 :保存长度大于44字节的字符串

可以利用 object encoding key 进行查看String类型的key是用的那些内部编码

127.0.0.1:6379> object encoding str
"raw"
127.0.0.1:6379> set str 123456789123456789 
OK
127.0.0.1:6379> object encoding str
"int"
127.0.0.1:6379> set str 1234567891234567899999
OK
127.0.0.1:6379> object encoding str
"embstr"

命令和栗子

get,set,del

API命令 详解 时间复杂度
get key 获取指定 key 的对应的value O(1)
set key value 设置 key - value O(1)
del key 删除 key - value O(1)
127.0.0.1:6379> get aquan
"aquan"
127.0.0.1:6379> set name "aquan"
OK
127.0.0.1:6379> get name
"aquan"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)

incr, decr,incrby,decrby

API命令 详解 时间复杂度
incr key key自增1,如果不存在key,自增后get key = 1 O(1)
decr key key自减1,如果不存在key,自减后get key = -1 O(1)
incrby key num key自减num,如果不存在key,自减后get key = num O(1)
decrby key count key自减num,如果不存在key,自增后get key = -num O(1)
127.0.0.1:6379> get count
(nil)
127.0.0.1:6379> incr count
(integer) 1
127.0.0.1:6379> get count
"1"
127.0.0.1:6379> incrby count 99
(integer) 100
127.0.0.1:6379> decr count
(integer) 99
127.0.0.1:6379> get coutn
(nil)

set,setnx,set xx

API命令 详解 时间复杂度
set key value 不管 key 是否存在,都设置 O(1)
setnx key value key不存在,才设置(add) O(1)
set key value xx key存在,才设置(updata) O(1)

PS: setnx 可以理解为数据的ADD操作, set xx 理解为更新操作

127.0.0.1:6379> exists name
(integer) 0
127.0.0.1:6379> set name "aquan"
OK
127.0.0.1:6379> setnx name "666"
(integer) 0
127.0.0.1:6379> get name
"aquan"
127.0.0.1:6379> set name "nb" xx
OK
127.0.0.1:6379> get name
"nb"
127.0.0.1:6379> exists java
(integer) 0
127.0.0.1:6379> setnx java "nb"
(integer) 1
127.0.0.1:6379> get java
"nb"

mget,mset

API命令 详解 时间复杂度
mget key1 key2 key3 ... 批量获取key O(n)
mset key1 value1 key2 value2 .. 批量设置key - value O(n)
127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3
OK
127.0.0.1:6379> mget key1 key2 key3
1) "value1"
2) "value2"
3) "value3"

PS:在适量的情况下 mget 比多次使用单个 get 获取key值效率高,速度快

getset,append,strlen

API命令 详解 时间复杂度
getset key value set key newvalue并且返回旧的value O(1)
append key value 将value追加到旧的value O(1)
strlen key 返回字符串的长度 O(1)

PS:注意中文使用 strlen 的时候,一个中文的长度为2

127.0.0.1:6379> getset name "aquan"
"nb"
127.0.0.1:6379> append name "666"
(integer) 8
127.0.0.1:6379> get name
"aquan666"
127.0.0.1:6379> strlen name
(integer) 8

incrbyfloat,getrange,setrange

API命令 详解 时间复杂度
incrbyfloat key 2.8 增加对应key的值2.8 O(1)
getrange key start end 获取字符串指定下标所有的值 O(1)
setrange key index value 设置指定下标所有对应的值 O(1)
127.0.0.1:6379> incr count
(integer) 100
127.0.0.1:6379> incrbyfloat count 2.8
"102.8"
127.0.0.1:6379> get count
"102.8"
127.0.0.1:6379> set str abcdef
OK
127.0.0.1:6379> getrange str 0 2
"abc"
127.0.0.1:6379> setrange str 2 "zzz"
(integer) 6
127.0.0.1:6379> get str
"abzzzf"

以上所述就是小编给大家介绍的《Redis-String》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品的视角:从热闹到门道

产品的视角:从热闹到门道

后显慧 / 机械工业出版社 / 2016-1-1 / 69.00

本书在创造性的提出互联网产品定义的基础上,为读者提供了一个从0基础到产品操盘手的产品思维培养方法! 全书以互联网产品定义为基础,提出了产品思维学习的RAC模型,通过认识产品、还原产品和创造产品三个阶段去培养产品思维和产品认知。 通过大量的图片和视觉引导的方法,作者像零基础的用户深入浅出的描绘了一条产品经理的自我修养路径,并且提供了知识地图(knowledge map)和阅读雷达等工具,......一起来看看 《产品的视角:从热闹到门道》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

随机密码生成器
随机密码生成器

多种字符组合密码