Redis系列-3.字符串(String)结构
来源:互联网 发布:网络调查的原则 编辑:程序博客网 时间:2024/06/05 21:04
Redis系列-3.字符串(String)结构
文章中可能有地方描述偏差,欢迎留言指证
- Redis系列-3字符串String结构
- 基本
- 常用命令
- 设置值
- 获取值
- 批量设置值
- 批量获取值
- 计数
- 不常用命令
- 追加值
- 字符串长度
- 设置并返回原值
- 设置指定位置的字符
- 获取部分字符串
- 内部编码
- 适合场景
1.基本
String是一种常用的redis结构,和其他编程语言中的string类似。
2.常用命令
下面所有描述里 {}都是必需参数,<>是可选参数
设置值
set {key} {value} < ex seconds> < px milliseconds> < nx|xx>key:键的名字value:值ex seconds:设置秒级的过期时间px milliseconds:设置毫秒级的过期时间nx:当键不存在时,这条命令生效xx:当键存在时,这条命令生效
命令成功之后会返回一个ok
获取值
get {key}
获取值,如果键不存在,会返回空(nil)
批量设置值
mset {key} {value} [key value....]
通过mset可以一次设置多条值,但在线上环境中个人不建议一次设置太多。有可能因为网络原因传输失败,或服务器因为某种原因设置失败。redis是单线程架构,只要网络不是太差,可以采用多传的方式。
如果需求是要添加多条数据,也建议用mset而不是set,这样的话可以降低网络开销。
批量获取值
mget {key} [key...]
用法同mset
计数
incr {key}
这条命令是对键做自增操作。有三种情况:
1.值不是整数,操作失败
2.值是整数,返回自增后的结果(比如以前是2,返回3)
3.键不存在,会设置一条数据为0,键名是参数key的数据,并返回结果。
除了incr命令 还有几种同类命令;
decr {key} 自减incrby {key} {increment} 自增指定的数字decrby {key} {decrement} 自减指定的数字incrbyfloat {key} {increment} 自增指字的浮点数
3.不常用命令
追加值
append {key} {value}
此命令可以向字符串尾部追加值
但个人不建议直接追加,这样会导致一定的计算开销和内存管理开销。建议可以在服务器做好处理,当需要追加时,获取旧值,再直接用set添加新值,替换掉。
字符串长度
strlen {key}
返回键的长度,但如果键不是字符串会报错。其他类型也有自己的获取长度命令。此类命令不会产生遍历操作,会直接读取内部键来获取数据,时间复杂度为O(1)
设置并返回原值
getset {key} {newValue}
作用和set一样,不同的是这条命令会返回旧值
设置指定位置的字符
setrange {key} {offeset} {value}
这条命令会替换指字位置的字符
如图所示,当值为一个以上字符串,会顺序向后覆盖。
获取部分字符串
getrange {key} {start} {end}
从0开始算起,end是结束的下标,返回值也包括自己
-1代表末尾 其他数据结构也是
4.内部编码
有两种:
**int:**8个字节的长整型
embstr:字节数<=39
raw:字节数>39
redis会自动按情况转换编码类型,这样的好处是在性能 空间上取得了平衡。但是要设计阶段也要考虑数据的长度,尽量避免转换。
5.适合场景
1.缓存
保存查询结果。数据源收到命令后会处理,这些处理可有很销时。如果这些处理可能是重复的,那把结果保存在redis就非常爽了。
2.计数
像视频类网站,播放量这种数据,读写量都会比大,这时用redis也是非常好的。redis内部对int做了优化,在做加减时开销相对较小。
3.共享数据
redis有时也用做分布式架构,这时类如用户信息等数据需要在多个节点之间传递。redis就非常适合这样的场景。
4.限速
当短信验证码计时这类需求时,用redis也非常好。前面设置值时有个过期时间,当查询不到键时,不就可以又发送短信了么?
- Redis系列-3.字符串(String)结构
- Redis系列~字符串(String)(六)
- redis基本结构(1)------字符串键(string)
- 【Redis】----Redis字符串(String)
- Redis数据类型--String(字符串)
- Redis之 字符串(String)
- Redis系列-4.哈希(Hash)结构
- Redis系列-5.列表(List)结构
- Redis系列-6.集合(Set)结构
- 3.Python操作Redis:字符串(String)
- Redis教程(二)字符串(String)类型
- Redis教程(二)字符串(String)类型
- Redis 数据类型之String(字符串)类型
- redis必杀命令:字符串(String)
- redis - String字符串操作
- Redis 字符串(String)
- redis - String字符串操作
- redis - String字符串操作
- python-problem-大文件的读取
- 深入探讨 Java 类加载器
- 1011. A+B和C (15)
- 服务篇---zookeeper集群的部署及配置
- 集合-subList的缺陷
- Redis系列-3.字符串(String)结构
- 半稠密直接法
- JVM知识点总览
- 背景
- PHP函数总结(项目经常遇到的)
- LWC 50:678. Valid Parenthesis String
- POJ1273 Drainage Ditches(网络流最大流模板)
- 验证码刷新
- android学习---使用HttpURLConnection