Redis(五大数据类型)

五大数据类型

官方文档

在这里插入图片描述
在这里插入图片描述

我们现在所有的命令一定要全部记住

Redis-Key

keys *		# 查看所有key
set name zhangsan		# set key
EXISTS name 		# 判断当前key是否存在
move name 1			# 移除当前的key
EXPIRE name 10 		# 设置key的过期时间,单位是秒
ttl name 		# 查看当前key的过期时间
type name 		 # 查看当前key的类型 

String(字符串)

APPEND name “hello”		# 字符串拼接,返回字符串长度,若当前key不存在,就相当于set key
STRLEN name		# 获取字符串的长度
#############################################
set views 0
incr views		# +1
decr views		# -1
INCRBY views 10 		# +10 指定增量
DECRBY views 10 		# -10	指定减量
##############################################
GETRANGE key 0 3 		# 截取字符串0到3
GETRANGE key 0 -1 	# 获取全部的字符串  和get key是一样的
SETRANK key 1 xx		# 替换指定位置开始的字符串
##############################################
setex (set with expire)		# 设置过期时间
setex key3 30 "hello"			# 设置key3的值为hello,30秒后过期
setnx (set if not exist) 		# 不存在再设置(在分布式锁中常常使用!)
setnx mykey "redis"			# 如果mykey不存在,创建mykey,返回 1
setnx mykey "mongDB"		# 如果mykey存在,则创建失败,返回 0
###############################################
mset k1 v1 k2 v2 k3 v3 		# 批量设置
mget k1 k2 k3 					# 同时获取多个值
msetnx k1 v1 k4 v1 			# msetnx 是一个原子性的操作,要么一起成功,要么一起失败

# 对象
set user:1 {name:zhangsan,age:3} 		#设置一个对象user:1,值为json字符串来保存一个对象!
# 这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全OK的
################################################
getset db redis			# 如果不存在值,则返回nil
								# 如果存在存在值,获取原来的值,并设置新的值

List(列表)

所有的list命令都是 l 来头的

##########################################
LPUSH list one 				# 讲一个值放在列表的头部(左)
LPUSH list two
LPUSH list three
LRANGE list 0 -1			# 通过区间获取具体的值

RPUSH list right			# 将一个值或多个值,插入到列表的右边
Lpop list						# 移除列表的第一个元素(最左边)
Rpop list						# 移除列表的最后一个元素(最右边)
Lindex list 1					# 通过下标获取list中某个元素

Llen list 						# 返回列表的长度
##########################################
lrem list 1 one 				# 移除list集合中指定个数的value,精确匹配
									# 移除list中1个“one”
##########################################
ltrim list  1 2					# 通过下表截取指定的长度,这个list已经被改变了,只剩下截取的部分

rpoplpush	list newlist		# 移除列表最后一个元素,将他移到另一个列表

小结

  • 他实际上是一个链表,bdfore Node after, left ,right 都可插入
  • 如果key不存在,创建新饿链表
  • 如果key存在,新增内容
  • 如果移除了所有值,空链表,也代表不存在
  • 在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点

消息排队!消息队列(Lpush Rpop),栈(Lpush Lpop)

set(集合)

set中的值不能重复

Sadd myset "hello"				# set集合中添加元素
											成功:1,失败:0(值重复了)
Smembers myset					# 查看指定set的所有值
Sismember myset hello			# 判断某一值是否在set集合中
											存在:1,不存在:0
#################################################
Scard myset 							# 获取set集合中的元素个数
Srem myset hello					# 移除set集合中的某个元素

set无序不重复集合

Srandmember myset				# 随机抽取set集合中的一个元素
##################################################
Spop myset 							# 随机移出一个值

Smove myset myset2 "hello"	# 将一个指定的值,移动到另一个set集合

微博,B站,有一些共同关注(并集)

Sdiff myset1 myset2 				# myset1和myset2的差集
Sinter myset1 myset2			# 交集
Sunion myset1 myset2			# 并集

微博,A用户将多有关注的人放在一个set集合中!将他的粉丝也放在一个集合中!共同关注,共同好友,二度好友,推荐好友(六度分割理论)

Hash(哈希)

Map 集合,key-map 这时候这个值就是一个map集合!本质和String没有太大的区别,还是一个简单的key-value

hset myhash key1 value1		# set一个具体的 key - value
hget myhash key1 				# 获取一个字段
hmset myhash key1 value1 key2 value2		# set多个key-value
hmget myhash key1 key2 		# 获取多个字段
hgetall myhash 						# 获取全部数据
######################################################
hdel myhash key1					# 删除hash指定的key,对应的value值也就消失了
######################################################
hlen myhash 							# 获取hash中的长度
hexists myhash key1				# 判断hash中指定字段key是否存在
hkeys myhash						# 获取素有的key
hvals myhash 						# 获取所有的value

hash变更的数据user name age,尤其是用户信息之类的,经常变动的信息! hash更适合于对象的存储,String更适合字符串的存储

Zset(有序集合)

在set的基础上,增加了一个值

zadd myset 1 one 					# 添加一个值
zadd myset 2 two 3 three

zadd salary 2500 xiaohong
zadd salary 5000 zhangsan 
zadd salary 500 lisi 
Zrangebyscore salary -inf +inf		# 从正无穷到负无穷(最小值到最大值)
Zrangebyscore salary -inf +inf withscores 	# 附带成绩
########################################################
zrem salary xiaohong 				# 移除有序集合中的指定元素
zcard salary 0 -1						# 获取指定区间元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值