Redis数据类型和基本操作

时间:2020-05-28
本文章向大家介绍Redis数据类型和基本操作,主要包括Redis数据类型和基本操作使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Redis数据类型介绍

string字符串
hash字典
lits列表
set集合
sortset有序集合
## string类型

key value
num 10

应用场景:计数器

string数据操作命令

# 增
set mykey "test"				# 设置新值,如果已经存在则覆盖旧值
getset mycounter 0				# 先取值,再设置值(get xxx, set xxx xxx)
setex mykey 10 "hello"			# 设置值的过期时间为10s,超过过期时间,值会销毁
mset key1 "abc" key2 "123"		# 批量增加

# 删
del mykey						# 删除键---值,如果删除成功返回1,否则返回0(没有这个键)

# 改
append mykey "hello"			# 在原有值的后面追加,没有就创建,返回追加后的值的长度

incr c1							# 将值+1,没有就创建,并设置初始值为1
decr c1							# 将值-1,没有就创建,并设置初始值为-1
incrby c1 10					# 将值+10,没有就创建,并设置初始值为10
decrby c1 10					# 将值-10,没有就创建,并设置初始值为-10
	
setrange mykey 20 "dd"			# 将第21和22字节替换为"dd",长度不够补0

# 查
exists mykey					# 判断该值是否存在,存在返回1,否则返回0
get mykey 						# 取值
strlen mykey 					# 获取长度
ttl mykey						# 获取存活时间,-1表示永久存活
getrange mykey 1 20				# 获取第2-20个字节,超过了value的长度,则取第1个字节后所有的值
mget key1 key2					# 批量取值

hash类型

key value
student id:1001 name:“张三” age:18

hmset student id 1001 name "zhangsan" age 18
OK
hmget student id name age
1) "1001"
2) "zhangsan"
3) "18"

应用场景:关系型数据库缓存

手工模拟MySQL数据库灌入到Redis中

select concat("hmset t100w_",id," id ",id," num ",num," k1 ",k1," k2 ",k2," dt ",'"',dt,'"') from t100w limit 1000 into outfile '/tmp/t100w_redis';
scp t100w_redis root@192.168.100.10:/tmp
cat /tmp/t100w_redis | redis-cli -a 000000 1>&2 > /tmp/in.log
127.0.0.1:6379> hgetall t100w_100
 1) "id"
 2) "100"
 3) "num"
 4) "18533"
 5) "k1"
 6) "p1"
 7) "k2"
 8) "KLwx"
 9) "dt"
10) "2019-08-11 23:41:16"

hash数据操作命令

hmset key field1 value [field2 value ...]			# 设置一个或多个字段的值

hset key field value								# 设置一个字段的值

hmget key field1 [fiedl2 ...] 						# 查看一个或多个字段

hget key filed										# 查询一个字段

hgetall key 										# 查看所有字段

hexists key field									# 查询是否有这个字段

hkeys key											# 获取所有字段

hlen key											# 获取字段数量

hvalues												# 获取所有的值

hdel key field1 [field2 ...]						# 删除一个或多个字段

hincrby key field increment 						# 为一个字段增加指定值

hincrbyfloat key field increment 					# 为一个浮点数字段增加指定值

list类型

key value
list_1 [1,2,3,4,a,b,c] # 先录入的数据在后,最新的值永远在最前

应用场景:类似新闻,即时消息展示

127.0.0.1:6379> LPUSH today 0 1 2 3 4
(integer) 5
127.0.0.1:6379> LRANGE today 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "0"

lish数据操作命令

BLPOP key1 [key2 ] timeout				# 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

BRPOP key1 [key2 ] timeout				# 移出并获取列表最后一个元素,其他同 BLPOP

BRPOPLPUSH source destination timeout	# 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

LINDEX key index						# 通过索引获取列表中的元素

LINSERT key BEFORE|AFTER pivot value	# 在列表的元素前或者后插入元素

LLEN key								# 获取列表长度

LPOP key 								# 移出并获取列表第一个元素

RPOP key								# 移出并获取列表的最后一个元素

LPUSH key value1 [value2]				# 将一个或多个值插入到列表头部,没有此列表则先创建

RPUSH key value1 [value2]				# 将一个或多个值插入到列表尾部,没有此列表则先创建

LPUSHX key value						# 将一个值插入到已存在的列表头部

RPUSHX key value						# 将一个值插入到已存在的列表尾部

LRANGE key start stop					# 获取列表指定范围内的元素

LREM key count value					# 移除列表元素

LSET key index value					# 通过索引设置列表元素的值

LTRIM key start stop					# 删除列表中指定区间外的元素

DEL key									# 删除列表

set类型

key value
names {“张三”,“李四”,”王五”}

应用场景:社交类软件的好友系统,共同好友,二度好友

127.0.0.1:6379> SADD names zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379> SMEMBERS names
1) "lisi"
2) "wangwu"
3) "zhangsan"

set数据操作命令

SADD key member1 [member2]				# 向集合添加一个或多个成员,没有此集合则创建

SCARD key								# 获取集合的成员数

SINTER key1 [key2]						# 返回给定所有集合的交集

SDIFF key1 [key2]						# 返回给定所有集合的差集

SUNION key1 [key2]						# 返回所有给定集合的并集

SDIFFSTORE destination key1 [key2]		# 返回给定所有集合的差集并存储在 destination 中

SINTERSTORE destination key1 [key2]		# 返回给定所有集合的交集并存储在 destination 中

SUNIONSTORE destination key1 [key2]		# 所有给定集合的并集存储在 destination 集合中
	
SISMEMBER key member					# 判断 member 元素是否是集合 key 的成员

SMEMBERS key							# 返回集合中的所有成员

SMOVE source destination member			# 将 member 元素从 source 集合移动到 destination 集合

SPOP key								# 移除并返回集合中的一个随机元素

SRANDMEMBER key [count]					# 返回集合中一个或多个随机数

# 迭代集合中的元素
SSCAN key cursor [MATCH pattern] [COUNT count]

sorted set 类型

key value
s_set (歌曲1, 歌曲2, 歌曲3)

应用场景:排行榜

127.0.0.1:6379> ZADD hpb 0 a 0 b 0 c
(integer) 3
127.0.0.1:6379> ZRANGE hpb 0 -1
1) "a"
2) "b"
3) "c"

sorted set 数据操作命令

ZADD key score1 member1 [score2 member2]		# 向集合添加一个或多个成员,没有此集合则创建

ZCARD key										# 获取有序集合的成员数

ZCOUNT key min max								# 计算在有序集合中指定区间分数的成员数

ZINCRBY key increment member					# 有序集合中对指定成员的分数加上增量 increment

ZINTERSTORE destination numkeys key [key ...]	# 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中

ZLEXCOUNT key min max							# 在有序集合中计算指定字典区间内成员数量

ZRANGE key start stop [WITHSCORES]				# 通过索引区间返回有序集合指定区间内的成员

ZRANGEBYLEX key min max [LIMIT offset count]	# 通过字典区间返回有序集合的成员

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]	# 通过分数返回有序集合指定区间内的成员

ZRANK key member								# 返回有序集合中指定成员的索引

ZREM key member [member ...]					# 移除有序集合中的一个或多个成员

ZREMRANGEBYLEX key min max						# 移除有序集合中给定的字典区间的所有成员

ZREMRANGEBYRANK key start stop					# 移除有序集合中给定的排名区间的所有成员

ZREMRANGEBYSCORE key min max					# 移除有序集合中给定的分数区间的所有成员

ZREVRANGE key start stop [WITHSCORES]			# 返回有序集中指定区间内的成员,通过索引,分数从高到低

ZREVRANGEBYSCORE key max min [WITHSCORES]		# 返回有序集中指定分数区间内的成员,分数从高到低排序

ZREVRANK key member								# 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

ZSCORE key member								# 返回有序集中,成员的分数值

ZUNIONSTORE destination numkeys key [key ...]	# 计算给定的一个或多个有序集的并集,并存储在新的 key 中

ZSCAN key cursor [MATCH pattern] [COUNT count]	# 迭代有序集合中的元素(包括元素成员和元素分值)

原文地址:https://www.cnblogs.com/xiasir/p/12980061.html