String字符串类型
大约 3 分钟数据库技术Redis
String类型的常用命令
#################################################################################################
# 1、字符串操作
127.0.0.1:6379> set key1 v1 # 设置值
OK
127.0.0.1:6379> get key1 # 获得值
"v1"
127.0.0.1:6379> keys * # 查看所有的key
1) "key1"
127.0.0.1:6379> EXISTS key1 # 判断某一个key是否存在
(integer) 1
127.0.0.1:6379> APPEND key1 hello # 追加字符串。如果当前key不存在,就相当于set key
(integer) 7
127.0.0.1:6379> get key1
"v1hello"
127.0.0.1:6379> STRLEN key1 # 获取字符串的长度
(integer) 7
127.0.0.1:6379> APPEND key1 ,hejin
(integer) 13
127.0.0.1:6379> STRLEN key1
(integer) 13
127.0.0.1:6379> get key1
"v1hello,hejin"
127.0.0.1:6379>
#################################################################################################
# 2、自增自减
i++
127.0.0.1:6379> set views 0 # 初始浏览量为0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> INCR views # 自增1 浏览量变为1
(integer) 1
127.0.0.1:6379> get views
"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 # 自减1
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> decr views
(integer) -1
127.0.0.1:6379> get views
"-1"
127.0.0.1:6379> INCRBY views 10 # 可以设置步长。指定增量。每次增加多少。
(integer) 9
127.0.0.1:6379> get views
"9"
127.0.0.1:6379> INCRBY views 10
(integer) 19
127.0.0.1:6379> INCRBY views 10
(integer) 29
127.0.0.1:6379> get views
"29"
127.0.0.1:6379> DECRBY views 10 # # 可以设置步长。指定增量。每次减少多少。
(integer) 19
127.0.0.1:6379> DECRBY views 10
(integer) 9
127.0.0.1:6379> DECRBY views 10
(integer) -1
127.0.0.1:6379> get views
"-1"
127.0.0.1:6379>
#################################################################################################
# 3、字符串范围 range
127.0.0.1:6379> set key1 hello,hejin # 设置key1的值
OK
127.0.0.1:6379> get key1
"hello,hejin"
127.0.0.1:6379> GETRANGE key1 0 3 # 截取字符串 [0,3]
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1 # 获取全部的字符串
"hello,hejin"
#################################################################################################
# 4、替换
127.0.0.1:6379> set key2 abcdefg
OK
127.0.0.1:6379> get key2
"abcdefg"
127.0.0.1:6379> setrange key2 1 xx # 替换指定位置开始的字符串
(integer) 7
127.0.0.1:6379> get key2
"axxdefg"
#################################################################################################
# 5、setex和setnx
# setex(set with expire) # 设置过期时间
# setnx(set if not expire) # 不存在再设置(在分布式锁中会常使用)
127.0.0.1:6379> setex key3 30 hello # 设置key3的值为hello,30秒后过期
OK
127.0.0.1:6379> ttl key3
(integer) 23
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> setnx mykey redis # 如果mykey不存在,创建mykey
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
3) "mykey"
127.0.0.1:6379> ttl key3
(integer) -2
127.0.0.1:6379> setnx mykey "mongodb" # 如果mykey存在,创建失败
(integer) 0
127.0.0.1:6379> get mykey
"redis"
#################################################################################################
# 6、mset 和 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 # 同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 # msetnx是一个原子性的操作。要么一起成功,要么一起失败。
(integer) 0
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
#################################################################################################
# 7、对象
# 这里的key是一个巧妙的设计:user:{id}:{field} 如此设计在Redis中是完全可以的
127.0.0.1:6379> mset user:1:name hejin user:1:age 20
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "hejin"
2) "20"
127.0.0.1:6379>
#################################################################################################
# 8、getset
127.0.0.1:6379> getset db Redis # 如果不存在值则返回null
(nil)
127.0.0.1:6379> get db
"Redis"
127.0.0.1:6379> getset db mongodb # 如果存在值则获取原来的值,并设置新的值
"Redis"
127.0.0.1:6379> get db
"mongodb"
127.0.0.1:6379>
数据结构是相通的。
String类型的使用场景
value除了是字符串还可以是数字。
- 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储