Redis的数据类型和一些常用命令


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Redis数据类型

String

说明:key指的是你的输入

set key 			设置值
get key				获得值
key *				获取所有key
EXISTS key			判断当前key是否存在
move key db			移除当前的key到哪个数据库(db)
EXPIRE key time		设置当前key过期时间,秒为单位
ttl key				查看当前key的剩余时间
type key			查看当前key为什么类型
APPEND key“--”		当前key追加内容,如果当前key不存在,就相当于set一个key
STRLEN key			获取当前key字符串的长度
incr key			当前key自增1
decr key			当前key自减1
INCRBY key 5		当前key一次性自增5
DECRBY key 5		当前key一次性自减5
GETRANGE key 0 3		截取0~3的字符串(如果是0 ~ -1 查看整个key的字符串)
SETRANGE key 1 xx		替换key下标指定1位置开始的字符串

拓展记录:

分布式锁中会常常使用
setex(set with expire) 	设置过期时间
setnx (set if not exist)	不存在再设置(分布式锁中会常常使用)

mset key value				批量设置多个值(空格分隔)
mget key value				同时获取多个值
msetnx key value ...		原子性的操作要么一起成功要么一起失败

对象:
mset user : 1 : name zhangsan user : 1 : age 2
user : {id} : {filed}

组合命令
getset key1  aa				先get再set,如果不存在值,返回null,并设置新值
getset key1  bb				如果存在值,返回原来的值,并设置新值

List

所有的list命令都是以l开头的

LPUSH list key			将一个或者多个值,插入到列表的头部(左边)
RPUSH list key			将一个或者多个值,插入到列表的尾部(右边)
LRANGE list 0 1			通过区间获取具体的值(如果是0 -1 获取全部)
LPOP list				移除列表左边的第一位元素
RPOP list				移除列表右边的第一位元素
lindex list value		通过下标获取list中的某一个值
Llen list				返回列表的长度
Lrem list 1 one			移除list集合中指定个数的value,精确匹配
ltrim list 1 2			通过下标截取指定的长度,截取了只剩下截取的元素

组合命令
rpoplpush list list2			移除列表中的最后一个元素,并且移动到新的列表中
lset list 0 item				将列表中指定下标的值替换为另外一个值,如果存在,更新当前下标的值
LINSERT key before/after value 	将某一个具体的value插入到指定的元素前面或者后面

Set

所有的set命令都是以s开头的,且不重复

sadd set 			set集合中添加元素
SMEMBERS set		查看指定set的所有值
scard key 			获取当前set集合中的元素个数
srem set hello		移除set集合中的指定元素
SRANDMEMBER set 2	随机抽取选出指定个数的元素
spop				随机删除一些set集合中的元素
smove set set2		移动指定的元素到指定的集合中
SDIFF set set2		以第一个集合为参照,推算两个集合之间的差集
SINTER set set2		两个集合之间的交集
SUNION set set2		两个集合之间的并集

Hash

键值对的方式存储

hset hash key value						set一个具体的key-value
hmset hash key value key value set  	多个具体的key-value 
hgeta									获取全部的键值对
hget hash key							获取一个指定的字段值
hmget hash key1 key2					获取多个指定的字段值
hdel hash key1							删除hash指定的key字段,对应的value值也会一起删除
hlen hash								获取hash表的字段数量
HEXISTS hash key1						判断hash中的指定字段是否存在
hkeys hash								只获取所有的key
hvals hash								只获取所有的值
HINCRBY hash key1 1						自增1
HINCRBY hash key1 -1					自减1
hsetnx hash key1 value					如果不存在则可以设置,如果存在则不可以设置

hash更适合于对象的存储,String适合存储字符串

Zset(有序集合)

这个跟set用法差不多,唯一的不同就是有序的集合,命令都是以z开头的就可以了
以下列出几点比较特别的用法

ZRANGEBYSCORE salary -inf +inf				显示用户从小到大排序(无限小-无限大)
ZRANGEBYSCORE salary -inf +inf withscores 	显示全部用户并且附带成绩
zcount zset myset 1 3						获取指定区间的成员数量

小结:

以上是Redis的基本数据类型,写的比较常用,全面的可以到官方查看
Redis官网中文版

特殊数据类型:

Geospatial(地理位置)

规则:两级无法直接添加,一般用程序直接导入
(参数key,值:纬度、经度、名称)

geoadd chinaity 121.47 31.23 shanghai					添加地理位置(china:city 纬度  经度  名称)
GEOPOS china:city shanghai 								获取指定城市的纬度和经度
GEODIST china:city beijing shanghai km					查看两个城市之间的直线距离(单位有米,千米,英里,英尺等)
GEORADIUS china:city  110 30 500 km						以半径查询(以110 30的坐标为中心,方圆500km的城市)
(GEORADIUS china:city  110 30 500 km withdist withcoord count 1 )		筛选出指定的结果
(GEORADIUS china:city  110 30 500 km withdist)			显示到中心110 30距离的位置 
(GEORADIUS china:city  110 30 500 km withcoord)			显示周围人的定位信息
GEORADIUSBYMEMBER china:city bengjing 1000km 			以当前城市纬度和经度查询附近方圆1000km的城市

Bitmaps

位存储(一般用于环境:统计和计算出勤)

setbit sign 0 0				设置下标为0的元素,为0(0为没打卡,1为打卡)
getbit sign 3				获取下标为3的元素,返回0或1
bitcount sign 				统计操作,统计打卡的天数

特殊数据类型有三种,这里只写了两种我自己用到的

事务

开启事务(multi)
命令入队(......)
执行事务(exec)

放弃事务
DISCARD 					取消事务(队列中的命令都不会被执行)
编译型异常(命令错误!)事务中所以命令都不会被执行
运行时异常(1/0)事务中存在语法性,执行的时候命令可以正常执行,错误命令抛出异常

监控:(watch)
悲观锁:什么时候都会出问题,无论做什么都要加锁
乐观锁:什么时候都不会出现问题,所以不会加锁

watch key1				监视某一个key
如果发现执行事务失败了,就先解锁unwatch,再监视获取最新的值,最后比对值是否发生了变化

总结

写的比较仓促,常用的命令多练习就会记住了,扩展训练可以移动到官方文档查看:
Redis官网中文版

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值