有关网页设计与网站建设的文章,江苏省二级建造师考试网,网站开发岗位职责及任职要求,1688官网下载Redis
大家好#xff0c;我是香香。
在之前的 Redis 专栏 介绍与安装 Redis#xff0c;高性能内存数据存储系统 我们介绍到了 Redis 支持多种数据结构#xff0c;包括字符串、哈希表、列表、集合、有序集合等。 那我们今天来讲讲对 Redis 数据类型 String 的理解#xff…Redis
大家好我是香香。
在之前的 Redis 专栏 介绍与安装 Redis高性能内存数据存储系统 我们介绍到了 Redis 支持多种数据结构包括字符串、哈希表、列表、集合、有序集合等。 那我们今天来讲讲对 Redis 数据类型 String 的理解 我们先来了解以下 Redis 中对 Key 的命令操作 127.0.0.1:6379 ping #查看当前连接是否正常正常返回PONG
PONG
127.0.0.1:6379 clear #清楚当前控制台为了更好的看到下面输入的命令
127.0.0.1:6379 keys * #查看当前库里所有的key
1) db
127.0.0.1:6379 FLUSHALL #清空所有库的内容
OK
127.0.0.1:6379 keys *
(empty array)
127.0.0.1:6379 set name dingdada #添加一个key为‘name’ value为‘dingdada’的数据
OK
127.0.0.1:6379 get name #查询key为‘name’的value值
dingdada
127.0.0.1:6379 keys *
1) name
127.0.0.1:6379 set name1 dingdada2
OK
127.0.0.1:6379 get name1
dingdada2
127.0.0.1:6379 keys * #查看当前库里所有的key
1) name1
2) name
127.0.0.1:6379 EXISTS name #判断当前key是否存在
(integer) 1
127.0.0.1:6379 move name 1 #移除当前库1的key为‘name‘的数据
(integer) 1
127.0.0.1:6379 keys *
1) name1
127.0.0.1:6379 FLUSHALL #再次清空所有库的内容
OK## 多加几条数据 测试设置key的过期时间
127.0.0.1:6379 set name dingdada
OK
127.0.0.1:6379 set name1 dingdada1
OK
127.0.0.1:6379 set name2 dingdada2
OK
127.0.0.1:6379 EXPIRE name 15 #设置key为’name‘的数据过期时间为15秒 单位seconds
(integer) 1
127.0.0.1:6379 ttl name #查看当前key为’name‘的剩余生命周期时间
(integer) 13
127.0.0.1:6379 ttl name
(integer) 11
127.0.0.1:6379 ttl name
(integer) 6
127.0.0.1:6379 ttl name
(integer) 3
127.0.0.1:6379 ttl name
(integer) 1
127.0.0.1:6379 ttl name #如若返回-2证明key已过期
(integer) -2
127.0.0.1:6379 get name #再次查询即为空
(nil)
127.0.0.1:6379 type name1 # 获取key为name1的数据类型
string
127.0.0.1:6379 move name1 1
(integer) 1 # 将key为key2移动到数据库1中如果有不知道的命令可以去 Redis 官网 - Redis 命令大全 去查 数据类型 String 添加、查询、追加、获取长度判断是否存在:
127.0.0.1:6379 set name dingdada #插入一个key为‘name’值为‘dingdada’的数据
OK
127.0.0.1:6379 get name #获取key为‘name’的数据
dingdada
127.0.0.1:6379 get key1
hello world!
127.0.0.1:6379 keys * #查看当前库的所有数据
1) name
127.0.0.1:6379 EXISTS name #判断key为‘name’的数据存在不存在存在返回1
(integer) 1
127.0.0.1:6379 EXISTS name1 #不存在返回0
(integer) 0
127.0.0.1:6379 APPEND name1 dingdada1 #追加到key为‘name’的数据后拼接值为‘dingdada1’如果key存在类似于java中字符串‘’不存在则新增一个类似于Redis中的set name1 dingdada1 并且返回该数据的总长度
(integer) 9
127.0.0.1:6379 get name1
dingdada1
127.0.0.1:6379 STRLEN name1 #查看key为‘name1’的字符串长度
(integer) 9
127.0.0.1:6379 APPEND name1 ,dingdada2 #追加key存在的话拼接‘’返回总长度
(integer) 19
127.0.0.1:6379 STRLEN name1
(integer) 19
127.0.0.1:6379 get name1
dingdada1,dingdada2
127.0.0.1:6379 set key1 hello world! #注意点插入的数据中如果有空格的数据请用“”双引号否则会报错
OK
127.0.0.1:6379 set key1 hello world! #报错因为在Redis中空格就是分隔符相当于该参数已结束
(error) ERR syntax error
127.0.0.1:6379 set key1 hello,world! #逗号是可以的
OK自增/自减操作:
127.0.0.1:6379 set num 0 #插入一个初始值为0的数据
OK
127.0.0.1:6379 get num
0
127.0.0.1:6379 incr num #指定key为‘num’的数据自增1返回结果 相当于java中 i
(integer) 1
127.0.0.1:6379 get num #一般用来做文章浏览量、点赞数、收藏数等功能
1
127.0.0.1:6379 incr num
(integer) 2
127.0.0.1:6379 incr num
(integer) 3
127.0.0.1:6379 get num
3
127.0.0.1:6379 decr num #指定key为‘num’的数据自减1返回结果 相当于java中 i--
(integer) 2
127.0.0.1:6379 decr num
(integer) 1
127.0.0.1:6379 decr num
(integer) 0
127.0.0.1:6379 decr num #可以一直减为负数~
(integer) -1
127.0.0.1:6379 decr num #一般用来做文章取消点赞、取消收藏等功能
(integer) -2
127.0.0.1:6379 decr num
(integer) -3
127.0.0.1:6379 INCRBY num 10 #后面跟上by 指定key为‘num’的数据自增‘参数10’返回结果
(integer) 7
127.0.0.1:6379 INCRBY num 10
(integer) 17
127.0.0.1:6379 DECRBY num 3 #后面跟上by 指定key为‘num’的数据自减‘参数3’返回结果
(integer) 14
127.0.0.1:6379 DECRBY num 3
(integer) 11截取/替换操作:
#截取
127.0.0.1:6379 set key1 hello world!
OK
127.0.0.1:6379 get key1
hello world!
127.0.0.1:6379 GETRANGE key1 0 4 #截取字符串相当于java中的subString下标从0开始不会改变原有数据
hello
127.0.0.1:6379 get key1
hello world!
127.0.0.1:6379 GETRANGE key1 0 -1 #0至-1相当于 get key1效果一致获取整条数据
hello world!
#替换
127.0.0.1:6379 set key2 hello,,,world!
OK
127.0.0.1:6379 get key2
hello,,,world!
127.0.0.1:6379 SETRANGE key2 5 888 #此语句跟java中replace有点类似下标也是从0开始但是有区别java中是指定替换字符Redis中是从指定位置开始替换替换的数据根据你所需替换的长度一致返回值是替换后的长度
(integer) 14
127.0.0.1:6379 get key2
hello888world!
127.0.0.1:6379 SETRANGE key2 5 67 #该处只替换了两位
(integer) 14
127.0.0.1:6379 get key2
hello678world!设置过期时间、不存在设置操作:
#设置过期时间跟Expire的区别是前者设置已存在的key的过期时间而setex是在创建的时候设置过期时间
127.0.0.1:6379 setex name1 15 dingdada #新建一个key为‘name1’值为‘dingdada’过期时间为15秒的字符串数据
OK
127.0.0.1:6379 ttl name1 #查看key为‘name1’的key的过期时间
(integer) 6
127.0.0.1:6379 ttl name1
(integer) 5
127.0.0.1:6379 ttl name1
(integer) 3
127.0.0.1:6379 ttl name1
(integer) 1
127.0.0.1:6379 ttl name1
(integer) 0
127.0.0.1:6379 ttl name1 #返回为-2时证明该key已过期即不存在
(integer) -2
#不存在设置
127.0.0.1:6379 setnx name2 dingdada2 #如果key为‘name2’不存在新增数据返回值1证明成功
(integer) 1
127.0.0.1:6379 get name2
dingdada2
127.0.0.1:6379 keys *
1) name2
127.0.0.1:6379 setnx name2 dingdada3 #如果key为‘name2’的已存在设置失败返回值0也就是说这个跟set的区别是set会替换原有的值而setnx不会存在即不设置确保了数据误操作~
(integer) 0
127.0.0.1:6379 get name2
dingdada2mset/mget操作(多条数据操作):
127.0.0.1:6379 mset k1 v1 k2 v2 k3 v3 #插入多条数据
OK
127.0.0.1:6379 keys * #查询所有数据
1) k2
2) k3
3) k1
127.0.0.1:6379 mget k1 k2 k3 #查询key为‘k1’‘k2’‘k3’的数据
1) v1
2) v2
3) v3
127.0.0.1:6379 MSETNX k1 v1 k4 v4 #msetnx是一个原子性的操作在一定程度上保证了事务要么都成功要么都失败相当于if中的条件与
(integer) 0
127.0.0.1:6379 keys *
1) k2
2) k3
3) k1
127.0.0.1:6379 MSETNX k5 v5 k4 v4 #全部成功
(integer) 1
127.0.0.1:6379 keys *
1) k2
2) k4
3) k3
4) k5
5) k1添加获取对象和 getset 操作:
#这里其实本质上还是字符串但是我们讲其key巧妙的设计了一下。
##mset student:1:name student 相当于类名1 相当于idname 相当于属性
#如果所需数据全部这样设计那么我们在java的业务代码中就不需要关注太多的key
#只需要找到student类下面哪个id需要哪个属性即可减少了代码的繁琐在一定程度上可以理解为这个一个类的对象
127.0.0.1:6379 mset student:1:name dingdada student:1:age 22 #新增一个key为‘student:1:name’value为‘dingdada ’。。等数据
OK
127.0.0.1:6379 keys * #查看所有的key
1) student:1:age
2) student:1:name
127.0.0.1:6379 mget student:1:age student:1:name #获取数据
1) 22
2) dingdada##getset操作
127.0.0.1:6379 getset name1 dingdada1 #先get再set先获取key如果没有set值进去返回的是get的值
(nil)
127.0.0.1:6379 get name1
dingdada1
127.0.0.1:6379 getset name1 dingdada2 ##先获取key如果有set替换最新的值进去返回的是get的值
dingdada1
127.0.0.1:6379 get name1 #替换成功
dingdada2字符串数据类型在Redis中被广泛应用例如用于缓存数据、存储会话信息、计数器等场景。 总结
在 Redis 中字符串string数据类型是最简单和最常用的数据类型之一。 具有以下特点 存储简单值 字符串类型可以存储任意类型的数据例如文本、数字或二进制数据。 键值对存储 每个字符串类型的键都对应着一个值类似于键值对的形式可以通过键快速访问对应的值。 操作方法 字符串类型支持多种操作方法例如设置值、获取值、追加字符串、自增、自减等。 常见操作 常见的操作包括设置值SET、获取值GET、设置过期时间EXPIRE、自增自减INCR、DECR等。