String(字符串)类型

String简介

String类型是二进制安全的。意味着Redis的String可以包含任何数据,比如jpg图片或者序列化的对象
一个Redis中字符串value最多可以为512M

String(字符串)类型的常用命令

127.0.0.1:6379> set key1 val1  #设置key并设置值
OK
127.0.0.1:6379> get key1   # 获取key的值
"val1"
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> append key1 java # 在已有的key后面追加值
(integer) 8
127.0.0.1:6379> get key1
"val1java"
127.0.0.1:6379> append key2 123  # 如果key不存在,则新建一个key
(integer) 3
127.0.0.1:6379> keys * 
1) "key2"
2) "key1"
127.0.0.1:6379> strlen key2   # 获取key值得长度
(integer) 3
127.0.0.1:6379> strlen key1
(integer) 8
127.0.0.1:6379> set views 1
OK
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> incr views  # key自增   i++
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> incr views
(integer) 3
127.0.0.1:6379> get views
"3"
127.0.0.1:6379> decr views  #key自减  i--
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> incrBy views 100 # key增加的步长  i+=step
(integer) 102
127.0.0.1:6379> get views
"102"
127.0.0.1:6379> decrBy views 100 # key减少的步长  i-=step
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> set key1 hello,java
OK
127.0.0.1:6379> get key1
"hello,java"
127.0.0.1:6379> GETRANGE key1 6 -1  # 截取字符串 (-1 代表最后一位)
"java"
127.0.0.1:6379> getrange key1 0 -1
"hello,java"
127.0.0.1:6379> set key2 i like java
(error) ERR syntax error
127.0.0.1:6379> set key2 i,like,java
OK
127.0.0.1:6379> get key2
"i,like,java"
127.0.0.1:6379> setrange key2 2 :  # 替换字符串(-1 代表最后一位)
(integer) 11
127.0.0.1:6379> get key2
"i,:ike,java"
127.0.0.1:6379> setex key1 10 java # 设置key的值,并设置过期时间。如果key原来就存在,就会更换原来的key值
OK
127.0.0.1:6379> get key1
"java"
127.0.0.1:6379> ttl key1
(integer) -2
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> expire key1 20 # 设置锁的过期时间 
127.0.0.1:6379> setex key3 30 java  # 如果key不存在,就会新建key,并设置过期时间
OK
127.0.0.1:6379> get key3 
"java"
127.0.0.1:6379> ttl key3
(integer) 20

127.0.0.1:6379> mget key1 key2 key3
1) (nil)
2) "i,:ike,java"
3) (nil)
127.0.0.1:6379> setnx key1 java  #如果存在且为空,就会设置新值
(integer) 1
127.0.0.1:6379> get key1
"java"
127.0.0.1:6379> setnx key4 hello,world  # 如果不存在就添加key
(integer) 1
127.0.0.1:6379> get key4
"hello,world"
127.0.0.1:6379> setnx key1 luozhilin  # 如果存在且不为空,会设值失败
(integer) 0
127.0.0.1:6379> get key1
"java"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3  # 同时设置多个key
OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
127.0.0.1:6379> mget k1 k2 k3   # 同时获取多个key
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v3 k4 v2  # msetnx是一个事务操作(原子性),同时成功,同时失败
(integer) 0
127.0.0.1:6379> mget k1 k2 k3 
1) "v1"
2) "v2"
3) "v3"
# 设置对象
set user:1 {name:zhangsan,age:24} #设置一个user:1对象,值为json字符来保存一个对象

# 另一种设置对象的方法
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 34
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "34"
# 这样设置对象,可以实现key的复用 user:{id}:name
127.0.0.1:6379> keys *
1) "user:1:name"
2) "user:1"
3) "user:1:age"

127.0.0.1:6379> mget user:1:name user:1:age user:1
1) "zhangsan"
2) "34"
3) "{name:zhnagsan,age:23}"
127.0.0.1:6379> getset user:1:name liushao  # 返回原来key的值,再将key重新赋值
"zhangsan"
127.0.0.1:6379> get user:1:name
"liushao"
127.0.0.1:6379> getset user:2:name luozhi  # 如果之前没有key,就会返回nil ,并创建存在的key,并赋值
(nil)
127.0.0.1:6379> get user:2:name
"luozhi"

数据结构

String (value)的数据结构为简单动态字符串(Simple Dynamic String 缩写SDS)。是可以修改的字符串,内部结构实现上类似于java的ArrayList ,采用预分配冗余空间的方式来减少内存的频繁分配
注意字符串的最大长度为512M

posted @ 2022-05-31 22:50  小罗要有出息  阅读(115)  评论(0)    收藏  举报