Redis笔记_五大基本数据类型

五大基本数据类型

redis中文官方网址
首页

基本使用

keys * 											 # 查看所有的key
set key value       						     #存储key-value键值对
keys *											 #查看全部键值对
exists key                                       #判断当前key是否存在
move key 1									     #移除当前的key 1表示当前数据库号
get key										     #获取当前key的value
expire key 10								     #设置key的过期时间,单位为秒
ttl key											 #查看当前key的剩余过期时间
type name									     #查看当前key的类型

String(字符串)

set key val                           #设置值
get key							      #获得值
keys*							      #获得所有key
exists key 					          #判断某一个key是否存在
append key hello			          #追加某个key的value值。如果key不存在,则相当于创建
strlen key							  #获取字符串的长度

incr views					          # 自增1 浏览量变为1
decr views 							  # 自减1  浏览量-1
incrby views 10  					  # 设置步长,指定增量10
decrby views 5						  #设置步长,指定减量5

getrange key 0 3       			 	  #截取字符串 [0,3] 不影响原字符串
getrange  key 0 -1      			  #获取全部字符串   相当于get key
setrange key 1 xx      				  #从1位置开始替换指定字符xx

# setex (set with expire)  			  # 设置过期时间
# setnx (set if not exist) 			  # 不存在在设置 (在分布式锁中会常常使用!)
setex key 30 value        			  #设置key-value并指定三十秒后过期
setnx key redis             		  #如果key不存在,创建key,存在则创建失败!

mset k1 v1 k2 v2 k3 v3   			  #同时设置多个值
mget k1 k2                      	  #同时获得多个值
msetnx k1 v1 k4 v4  				  # msetnx 是一个原子性的操作,要么一起成功,要么一起失败!

# 对象
set user:1 {name:zhangsan,age:3}  	  # 设置一个user:1 对象 值为 json字符来保存一个对象!
									  # 这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全OK了!

getset db mongodb  					  # 先get在set        如果存在值,获取原来的值,并设置新的值

小结
String类似的使用场景:value除了是我们的字符串还可以是我们的数字!
—计数器
—统计多单位的数量
—粉丝数
—对象缓存存储!

List(列表)

可以看作栈,队列,阻塞队列,所有list命令以l开头。

lpush list one two                    		 #将一个值或者多个值,插入到列表头部 (左)
Rpush list righr						 	 # 将一个值或者多个值,插入到列表位部 (右)
LRANGE list 0 -1							 # 获取list中值!0为左下标   -1表示右无穷即全部
Lpop list									 # 移除list的第一个元素
Rpop list								     # 移除list的最后一个元素
lindex list 1								 # 通过下标获得 list 中的某一个值!

Llen list									 # 返回列表的长度

lrem list 1 one							 	 # 移除list集合中指定个数的value,精确匹配 1表示移除的个数因为list可以重复添加

ltirm list 1 2                     			 # 通过下标截取指定的长度,这个list已经被改变了,截断了只剩下截取的元素!

rpoplpush list otherlist					 #移除列表的尾部元素,添加到新列表的头部

lset list 0 item                             #将列表指定下标的值替换为另一个值,如果不存在列表则报错,存在则修改

linsert list before one item                 #将item插入到one的前面   after插入后边

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

Set(集合)

set中的值是不能重读的,无序的。

sadd set one                        #set集合中添加元素()
smembers set						#查看set的全部元素
sismember set one					#判断one是否在set中
scard set							#获取set中元素的个数

srem set one 						#移除one从set中

srandmember set 2            		#随机抽取指定个数的元素  不写默认为1
spop set							#随即删除set中的元素

smove set set2 one          	    #将one从set移动到set2

sdiff set1 set2                     #求差集(set1中set2没有的元素)
sinter set1 set2                	#交集(共同好友)
sunion                              #并集

小结
实际用途:微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)

Hash(哈希)

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

hset hash k1 v1                                 #set一个键值对
hget hash k1									# 获取一个字段值
hmest hash k1 v1 k2 v2							# set多个 key-vlaue
hmget hash k1 k2								# 获取多个字段值
hgetall hash                              		#获取全部数据
hkeys hash										#获取全部key
hvals hash										#获取全部value

hdel hash k1                       				#删除指定key-value

hlen                      						# 获取hash表的字段数量!

hexists hash k1									#判断指定字段是否存在

hincrby hash k1 5                               #指定增量5
hdecrby hash k1 5								#指定减量5

hsetnx hash k1 v1								#如果不存在k1则添加成功,否则失败if not exist

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

Zset(有序集合)

在set的基础上,增加了一个值, zset k1 score1 v1 ,score1表示理解为权重 可用来比较,也代表了插入顺序。

zadd zset 1 one 2 two 3 three                     #添加一个值或多个值
zrange set 0 -1                                   #查看全部值

zrangebyscore zset -inf +inf					  #从小到大排序显示  -inf负无穷  +inf正无穷
zrevrange zset 0 -1								  #从大到小进行排序显示
zrangebyscore zset -inf +inf withscores      	  #从小到大带分数排序显示

zrem zset one									  #移除元素
zcard zset										  #获取长度 即个数

zcount zset 1 3 								  #获取指定区间成员数量

小结
实际应用
1.set 排序 存储班级成绩表,工资表排序!
2.普通消息,1, 重要消息 2,带权重进行判断!
3.排行榜应用实现,取Top N 测试等!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值