字符串类型是redis中最为基础的数据存储类型,它在redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如jpeg图像数据或json对象描述信息等。redis中字符串类型的值的最大容量为 512mb。
| 命令原型 | 时间复杂度 | 命令描述 | 返回值 |
| APPEND | O(1) | 如果该Key已经存在,APPEND命令将参数Value的数据追加到已存在Value的末尾。如果该Key不存在,APPEND命令将会创建一个新的Key/Value。 | 追加后Value的长度。 |
| DECR | O(1) |
将指定Key的Value原子性的递减1。如果该Key不存在,其初始值为0,在decr之后其值为-1。如果Value的值不是整数类型,例如Hello,该操作将失败 并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型。 |
递减后的Value值。 |
| INCR | O(1) |
将指定Key的Value原子性的递增1。如果该Key不存在,其初始值为0,在incr之后其值为1。如果Value的值无法转换为整数值,比如说Hello这个字符串,那么该操作将会失败 并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型。 |
递增后的Value值。 |
| DECRBY | O(1) |
将指定Key的Value原子性的减少decrement。在执行decrby后,如果该Key不存在,则其初始值为0,之后其值变为-decrement。如果Value的值不能转换为整型值, 如Hello,该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型。 |
减少后的Value值。 |
| INCRBY | O(1) |
将指定Key的Value原子性的增加increment。如果该Key不存在,其初始值为0,在incrby之后其值为increment。如果Value的值不能转换为整型值,如Hello, 该操作将执行失败并返回相应的错误信息。注意:该操作的取值范围是64位有符号整型。 |
增加后的Value值。 |
| GET | O(1) | 获取指定Key的Value。如果与该Key关联的Value不是string类型,Redis将返回错误信息,因为GET命令只能用于获取string Value。 | 与该Key相关的Value,如果该Key不存在,返回nil。 |
| SET | O(1) | 设定该Key持有指定的字符串Value,如果该Key已经存在,则覆盖其原有值。 | 总是返回"OK"。 |
| GETSET | O(1) | 原子性的设置该Key为指定的Value,同时返回该Key的原有值。和GET命令一样,该命令也只能处理string Value,否则Redis将给出相关的错误信息。 | 返回该Key的原有值,如果该Key之前并不存在,则返回nil。 |
| STRLEN | O(1) | 返回指定Key的字符值长度,如果Value不是string类型,Redis将执行失败并给出相关的错误信息。 | 返回指定Key的Value字符长度,如果该Key不存在,返回0。 |
| SETEX | O(1) | 原子性完成两个操作,一是设置该Key的值为指定字符串,同时设置该Key在Redis服务器中的存活时间(秒数)。该命令主要应用于Redis被当做Cache服务器使用时。 | |
| SETNX | O(1) | 如果指定的Key不存在,则设定该Key持有指定字符串Value,此时其效果等价于SET命令。相反,如果该Key已经存在,该命令将不做任何操作并返回。 | 1表示设置成功,否则0。 |
| SETRANGE | O(1) |
替换指定Key的部分字符串值。从offset开始,替换的长度为该命令第三个参数value的字符串长度,其中如果offset的值大于该Key的原有值Value的字符串长度, Redis将会在Value的后面补齐(offset - strlen(value))数量的0x00,之后再追加新值。如果键不存在,该命令将假定其原值长度为0,并在其后添加offset个字符 0x00后再追加新值。鉴于字符串Value的最大长度为512M,因此offset的最大值为536870911。最后需要注意的是,如果该命令在执行时致使指定Key的原有值 当长度增加时,Redis会重新分配足够内存以容纳替换后的所有字符串,因此会在一定程度上影响性能。 |
修改后的字符串Value长度。 |
| GETRANGE | O(1) |
如果截取的字符串长度很短,我们可以该命令的时间复杂度视为O(1),否则就是O(N),这里N表示截取的子字符串长度。该命令在截取子字符串时,将以闭区间的方 式同时包含start(0表示第一个字符)和end所在的字符,如果end值超过Value的字符长度,该命令将只是截取从start开始之后所有的字符数据。 |
子字符串 |
| SETBIT | O(1) |
设置在指定Offset上BIT的值,该值只能为1或0,在设定后该命令返回该Offset上原有的BIT值。如果指定Key不存在,该命令将创建一个新值,并在指定 的Offset上设定参数中的BIT值。如果Offset大于Value的字符长度,Redis将拉长Value值并在指定Offset上设置参数中的BIT值,中间添加的BIT值为0。最后需要 说明的是Offset值必须大于0。 |
在指定Offset上的BIT原有值。 |
| GETBIT | O(1) | 返回在指定Offset上BIT的值,0或1。如果Offset超过string value的长度,该命令将返回0,所以对于空字符串始终返回0。 | 在指定Offset上的BIT值。 |
| MGET | O(N) | N表示获取Key的数量。返回所有指定Keys的Values,如果其中某个Key不存在,或者其值不为string类型,该Key的Value将返回nil。 | 返回一组指定Keys的Values的列表。 |
| MSET | O(N) | N表示指定Key的数量。该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行SET命令。 | 该命令不会失败,始终返回OK。 |
| MSETNX | O(N) |
N表示指定Key的数量。该命令原子性的完成参数中所有key/value的设置操作,其具体行为可以看成是多次迭代执行SETNX命令。然而这里需要明确说明的是, 如果在这一批Keys中有任意一个Key已经存在了,那么该操作将全部回滚,即所有的修改都不会生效。 |
append key value 在原有的value上添加值,如果key原先不存在就新建一个key和value不是追加
新视窗企业管理系统是一款小巧、实用、利于后续开发的ASP程序。适合大中小型企业的网站建设。1、新闻管理 2、产品管理 3、订单管理 4、广告管理 5、下载管理 6、留言管理 8、单页栏目(如企业简介,资质荣誉)9、人才招聘等等。 新视窗企业管理系统 5.1 更新日志:1、修改产品列表的图片自动缩略,防止图片变形.2、修改后台添加产品分类时,排序ID不写入数据库的错误.3、修改首页企业简介的链接地址
1
substr key start len 截取key,从start开始,截取len的长度
strlen key 获取key的长度
incr key 自增1
decr key 自减1
incrby key num 增加key ,增加num
decrby key num 减少key,减少num
getrange key start end 截取字符key [start,end] 包头也包尾
setrange key offset value 替换offset位置的数据改成value (offset是key的索引)
setex key seconds value 设置key的过期时间
若key不存在,则执行setnx命令会将key和value设置进去;但如果key已存在,则setnx命令会失败,无法再次添加value
mset key1 value key2 value 一次性设置多个key、value
mget key1 key2 一次性获取多个key的value
msetnx key1 value key2 value 一次性设置多个key、value 如果其中一个key存在则全部创建失败(原子性)
getset key value 如果不存在获取nil,然后设置值,如果指存在获取之前的值,在设置后面的value(更新的操作)
###############################################
127.0.0.1:6379> set key1 v
OK
127.0.0.1:6379> get key1
"v"
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> exists key1
(integer) 1
127.0.0.1:6379> append key1 v1
(integer) 3
127.0.0.1:6379> get key1
"vv1"
127.0.0.1:6379> substr key1 0 3
"vv1"
127.0.0.1:6379> strlen key1
(integer) 3
127.0.0.1:6379> append key1 "hello1"
(integer) 9
127.0.0.1:6379> substr key1 1 2
"v1"
127.0.0.1:6379> substr key1 1 1
"v"
127.0.0.1:6379> append key2 "lisi"
(integer) 4
127.0.0.1:6379> get key2
"lisi"
###############################################
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> incrby views 10
(integer) 10
127.0.0.1:6379> decrby views 5
(integer) 5
####################################
127.0.0.1:6379> set key1 "hello,world"
OK
127.0.0.1:6379> GETRANGE key1 0 3
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1
"hello,world"
127.0.0.1:6379> SETRANGE key2 3 2
(integer) 7
127.0.0.1:6379> get key2
"abc2efg"
########################################
127.0.0.1:6379> setex key3 30 hello
OK
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> ttl key3
(integer) 24
127.0.0.1:6379> SETNX mykey redis
(integer) 1
127.0.0.1:6379> keys *
1) "mykey"
2) "key2"
3) "key1"
127.0.0.1:6379> SETNX mykey "MongoDB"
(integer) 0
127.0.0.1:6379> get mykey
"redis"
####################################
127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> MSETNX k1 v1 k3 v3
(integer) 0
# 对象
# 这里的key是一个巧妙的设计 user:{id}:{filed}
127.0.0.1:6379> msetnx user:1:name "zhangsan" user:1:age 2
(integer) 1
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
127.0.0.1:6379> set article:101:views 0
OK
127.0.0.1:6379> incr article:101:views
(integer) 1
127.0.0.1:6379> get article:101:views
"1"
###########################################################
127.0.0.1:6379> getset db redis
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db 10
"redis"String类似的场景:value除了是我们的字符串还可以是我们的数字!
计数器
统计多单位的数量 uid:1923:follow 0
粉丝数
对象缓存存储
以上就是Redis中String数据类型实例分析的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号