redis入门学习笔记

一.redis简介

redis(Remote Dictionary Server):远程字典服务。基于内存的数据存储系统,适用于数据库缓存、消息队列等场景。

互联网不断发展,应用系统访问量增大,mysql、oracle等不管是数据库、表、表数据都存储在磁盘上,磁盘IO导致数据库性能降低,而磁盘IO读写操作与内存相比非常慢,所以出现redis,与其他数据库相比性能更高。

内存RAM(Random Access Memory,随机访问存储器):临时存储和快速访问数据,cpu可以快速访问和执行,速度是纳秒级别,缺点是断电后数据丢失和容量限制。

磁盘:用于存储数据,由一个或多个旋转的磁性盘片(通常是金属或玻璃制成)组成,比如固态硬盘。通过磁头在磁盘上读写,速度是毫秒级别,断电后数据不会丢失,容量大但是读取时间长。

注:索引将数据存储在特定的数据结构中,可以添加索引提高数据库查询效率,但在插入、更新、删除时也会增加大量的IO操作。

二.redis五种基本数据类型

redis中数据以键值对方式存储,键和值以二进制形势存储,所以可以为数字、布尔值等,但默认不支持中文,区分大小写,默认使用字符串存储数据。

  • 字符串String

SET key value  //设置键和值

GET key  //获取值,若获取键输出值为nil表示该键已被删除

DEL key  //删除键

EXISTS key  //判断键是否存在,0-不存在,1-存在

KEYS *[参数]   //查看数据库中有哪些键,KEYS *会输出所有键,KEYS *name会输出以name结尾的键,若输出empty array则表示键不存在

FLUSHALL   //删除缓存中所有键,慎用

EXPIRE key 10  //key值10秒后过期

TTL KEY  //查看key值剩余过期时间,若返回为-2则表示已过期,再获取key值表示不存在

SETNX key value  //当键不存在时设置键的值,键存在setnx不做任何操作不会修改原来键的值,0-设置键的值失败,1-设置键的值成功

  • 列表List

存储和操作一组有顺序的数据,类似于数组的概念。相关命令以L开头。

LPUSH list123 value  //添加一个或多个元素到列表中,LPUSH从左到右添加,最后添加的元素会排在最前面;RPUSH从右到左添加,最后添加的元素排在最后面

LRANGE list123 起始位置 结束位置   //获取列表内容,起始位置和结束位置都是以0开始,结束位置为-1时表示最后一个元素

LPOP list123 数字 //LPOP删除列表前两个元素;RPOP删除列表后两个元素

LLEN list123 //查看列表长度

LTRIM list123 1 3   //删除列表中除1到3位置以外的元素,只保留1到3位置的元素

  • 集合Set

set是一种无序集合,与列表的区别是:列表中元素按插入顺序排序且可以重复,集合中元素不能重复且是无序的。命令以S开头。

SADD set123 a b c //添加集合,可以添加一个或多个元素,先插入的排在最后面,不允许添加重复的元素

SMEMBERS set123  //查看集合中元素,输出 c b a

SISMEMBER set123 a //查看a是否在集合set123中,1-真,0-假

SREM set123 a   //删除集合set123中a元素,若传入a、f 元素,会将存在的元素删除成功

SINTER set123 set456   //查看集合set123和set456的交集,返回两个集合共同存在的元素

SUNION set123 set456  //查看集合set123和set456的并集,返回两个集合中的元素,重复的元素只会出现一次

SDIFF set123 set456  //查看集合set123和set456的差集,返回存在集合set123但不存在set456中的元素,返回元素全部来自于set123

  • 有序集合Sortrdset/ZSet

与集合的区别是,有序集合中元素都会关联浮点类型的分数,按分数大小对集合中元素从小到大排序,有序集合中元素是唯一的,但分数是可以重复的,命令以Z开头。

ZADD zset123 3 d 1 a 2 p 2 c //添加有序集合,每个元素由成员和分数组成,分数在前成员在后,中间用空格分隔,存储时若分数一样,会将小的成员排在前面

ZRANGE zset123 0 -1 //输出有序集合全部成员,因为p和c的分数都是2,但c在p之前,输出结果是:a c p d

ZRANGE zset123 0 -1 WITHSORES //输出成员和分数,输出结果为:a 1 c 2 p 2 d 3

ZSCORE zset123 a  //查看成员a的分数

注意:ZADD zset123 6 p //成员p已存在,修改p的分数,会重新排序,查看成员分数输出结果为:a 1 c 2 d 3 p 6

ZRANK zset123 a  //查看a在集合中index,因为是从小到大排序,输出下标0

ZREVRANK zset123 a//查看a在集合中index,从大到小排序,输出下标3

ZREM zset123 p //删除有序集合中成员p,会连同分数一起删掉

  •  哈希Hash

字符类型字段和值的映射表,是键值对的集合,适合存储对象。命令以H开头。

HSET person name aa age 10 score 88 //添加键值对

HGET person name   //获取name的值

HGETALL person  //获取所有键值对

HDEL person score  age  //删除一个或多个键值对

HEXISTS person age  //查看键值对是否存在

HKEYS person  //获取哈希中所有键

三.redis高级数据类型
  • 消息队列Stream

消息持久化和记录历史消息。生产者发布消息并添加到消息队列中,消费者从消息队列中读取消息。

XADD x123 1001-0 name aa  //添加消息,1001-0为id

XLEN x123   //查看消息数量

XRANGE x123 - + //查看所有消息

XDEL x123 1001-0   //删除id为1001的消息

XTRIM x123 MAXLEN 0   //删除所有消息

XREAD COUNT 2 BLOCK 1000 STREAMS x123 0 //从头读取x123消息队列中2条消息,若消息不存在则延迟1000毫秒

  • 地理位置Geospatial

GEOADD city 118.8921 31.32751 nanjing  //添加城市信息的经纬度

GEOPOS city nanjing //获取南京的经纬度

GEOSERCH city nanjing BYRADIUS 200 KM  //以南京为圆心半径为200km查找其中的城市

  • 基数HyperLogLog

基数:两个数据集中不重复的元素。可以做关键词搜索次数统计等。

PFADD name aa bb cc   //添加基数

PFCOUNT name   //统计基数

pfmerge newdata dataList dataList1

PFMERGE allname name1 name2   //合并name1和name2将结果去重后放入allname

  • 位图BIT

字符串类型的扩展,值只有0和1。

SETBIT login 0 1 //设置偏移量0的值为1

GETBIT login 0  //获取偏移量0的值

BITCOUNT login  //获取位图中有多少偏移量的值为1

BITPOS login 1 //查看第一个出现1或0的位置

  • 位域

对字符串中的位进行读取和设置。

BITFIELD player:1 set u8 #0 1  //key:player:1表示你的id,u8表示8位无符号整数,#0表示第一个位置,1表示1级

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值