String字符串类型

HeJin大约 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除了是字符串还可以是数字。

  • 计数器
  • 统计多单位的数量
  • 粉丝数
  • 对象缓存存储