redis学习指南--概览篇

redis怎么学

官方学习网站:
redis.cn

1、整体了解redis

redis是一个内存数据库、kv数据库,数据结构数据库,redis中数据都是存储在redis中,可以通过key查找value,value可以有多种数据结构,有:string、list、hash、set、zset

2、redis怎么用,怎么操作redis数据结构

redis使用方式是一个请求响应交互模式,存储的是k-v对,value支持以下集中类型

  • string:支持二进制安全字符串,不会被特殊字符截断,支持\0
  • hash:唯一,无序
  • list:不唯一,插入有序
  • set:唯一,无序
  • zset:有序集合,唯一

使用命令进行交互:
set key value
setnx key value 设置不存在的key value对,不存在才会成功
del key

3、redis 中的value编码规则:

  • string类型:

有3种,在字符串长度小于等于20且为数字时为int,字符串长度大于44为raw,字符串长度小等于44时为embstr
raw类型是一种动态字符串,在字符串长度小于1M时,加倍扩容,大于1MB时,每次只扩1M,最多512M

  • list类型:

quicklist双向链表
ziplist压缩链表

  • hash:

字典dict:节点数量大于512或字符串长度大于64,
ziiplist:节点数量小于512且字符串长度小于64

  • set:

intset 元素都为整数且节点数量小于512
dict:节点数量小于512或有一个以上元素不为整数

  • zset:

skiplist – 数量大于68且有一个字符串长度大于64
ziplist – 节点数量小于68且字符串长度小于64

4、各种应用场景

  • 对象存储:

用json串组织对象属性作为value存储起来,一般对象不频繁变更时用来存储

  • 累加器:

对全局对象,用INCR key,一般用string类型
全局唯一值

  • 分布式锁:

确保只有一个进程或某个进程中的一个线程去操作一个全局唯一值
setnx加锁,因为锁存在时返回0,就可以用来定义为加锁失败,del解锁
setnx返回1,加锁成功

  • 位运算:

利用string是一个安全字符串,如应用在签到表,我们可以用位图来设置对应位的签到已否,对应位为1表示签到,为0表示未签到
如下:
setbit sign:10001:2002 1 1
表示设置用户10001在20年2月份第1天签到标识为1
sign:10001:2002为key,使用:是为了方便一些客户端工具使用,第一个1是位数,第二个1是值
获取对应第一天签到标识为:
getbit sign:10001:2002 1
获取总签到次数:
bitcount sign:10001:2002

不同编码的设计初衷是在数据量小的时候偏重于存储区效率高(占用内存少),数据量大时偏重运行速度快,避免阻塞其他业务应用请求

list:
list的关键特性是阻塞队列
消费方在请求某个key时如果不存在,则阻塞等待该key被生产方写入
在这里插入图片描述
利用该阻塞特性可以用来实现分布式公平锁
另外一个典型应用如**获取固定窗口数据,**像获取最近50条战绩
local record = KEYS[1]
redis.CALL(“LPUSH”, “says”, record)
redis.CALL(“LTRIM”, “says”, 0,4)

hash
对象存贮
通过field来确保唯一
可以用在对象属性经常修改场景的对象存储
同时操作多个hash字段:
hmset hash:10001 name lzs age 23 sex male
支持单独修改对象的某个属性,如
hset age 18
一次性获取所有字段值:
hgetall hash:10001
实际例子像购物车对象里面图片、名称、价格等都可作为属性

set一般用在共同交叉并集存在的场景,如共同关注
zset:
百度热榜 利用有序性
延时队列 – 将消息序列化成一个字符串作为zset的member,这个消息的到期处理时间作为score,定时查询到期的任务进行处理
分布式定时器
时间窗口限流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/135609.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

归并外排序实现

文章目录 1. 海量数据排序 1. 海量数据排序 如果我们想在文件中海量数据排序,我们比较适合选用归并排序。 首先,我们要看要排序的文件的大小,比如说这个文件是10G,而我们的内存是1G,那么我们可以把文件切成10份。这样…

汽车操纵稳定性matlab仿真

1、内容简介 略 14-可以交流、咨询、答疑 2、内容说明 汽车操纵稳定性matlab仿真,包含完整的论文 操纵动力学、两自由度 摘要:当今,仿真技术日益广泛地应用于汽车工程领域,操纵稳定性研究越来越多地使用成熟的计算机仿真理论…

【LeetCode:715. Range 模块 | 线段树】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

unity line renderer绘制的颜色不是想要的红色

线条不是暗红色的,用的是默认的红色 将材质选则为如下即可

javaSE学习笔记(七)IO流

目录 六、IO流 1.IO流概述 概念 分类 IO体系 简单介绍 最重要,最常用,最常见的两个流 2.File类 路径分隔符 绝对路径和相对路径 构造方法 方法 重命名注意事项 删除注意事项 3.FileInputStream&FileOutputStream FileInputStream 获取…

哨兵1号回波数据(L0级)产品目录介绍

1 数据包总览 哨兵1号L0级数据产品系列如下图所示,本文针对图中红框中的数据产品进行介绍(定标数据、噪声数据没下载到。。。)。 1.1 数据包名称 示例: S1A_S3_RAW__0SSV_20211230T105851_20211230T105907_041237_04E698_94F0.S…

github私有仓库开发,公开仓库发布版本

文章目录 github私有仓库开发,公开仓库发布版本需求背景实现思路GitHub Releases具体步骤广告 github私有仓库开发,公开仓库发布版本 需求背景 github私有仓库开发,公开仓库发布版本,既可以保护源代码,又可以发布版本给用户使用。许多知名软件项目都采用了这样的开…

Qt 子窗口不设置parent时,如何随主窗口关闭

遇到个情况,new一个子窗口的时候,如果指定了parent,那在最小化这个子窗口时这个子窗口并不是在缩小到任务栏,而是在任务栏的左上角。像这种: 并且,点击主窗口之后,子窗口也始终显示在主窗口之前…

视频批量剪辑:视频嵌套合并实战指南,剪辑高手速成秘籍

随着社交媒体的兴起,视频制作的需求越来越广泛。无论是个人用户还是专业团队,都需要对视频进行剪辑以符合其需求。而在这个过程中,批量剪辑视频的能力就变得至关重要。视频批量剪辑是指在一次操作中处理多个视频文件的剪辑。通过使用专业的视…

《软件工程与计算》期末考试真题范例及答案

今天分享一套针对《软件工程与计算》这本书的真题案例,有关《软件工程与计算》23章内容的重点知识整理,已经总结在了博客专栏中,有需要的自行阅读: 《软件工程与计算》啃书总结https://blog.csdn.net/jsl123x/category_12468792.…

Dubbo快速入门

1.什么是Dubbo? Dubbo是一款高性能分布式服务框架,由阿里巴巴开发并开源发布。它支持多种协议,如dubbo、HTTP、Hessian、Thrift等,可以很好地解决分布式服务中的服务治理问题,提供了服务注册、发现、负载均衡、容错等功…

第26章_事务概述与隔离级别

文章目录 事务事务的特征事务的控制语句事务的生命周期事务的执行过程 ACID特性原子性一致性隔离性持久性 隔离级别不同隔离级别并发异常脏读不可重复读幻读区别 总结 事务 (1)事务的前提:并发连接访问。MySQL的事务就是将多条SQL语句作为整…

伦敦金股票代码是什么?

伦敦金是跟踪实时的现货黄金价格走势的差价合约交易,它的代码一般是LLG、GOLD,但也有一些货币交易平台会显示为XAU。伦敦金不是股票交易,因此没有四位数或六位数的股票代码,但伦敦金交易品种单一,投资者不用在数千支股…

路径规划-车辆分配及导航

1.根据城市之间的连通状态,构建以城市为结点、两个城市间的距离(根据两个城市经纬度计算的欧式距离)作为边权重的无向图。 2.根据起始点,对除了起始点之外的其他点进行聚类,将点划分成几个部分。 3.在每个部分中找出…

SpringBoot Web开发

SpringBoot3-Web开发 SpringBoot的Web开发能力,由SpringMVC提供。 Web开发的三种方式 方式处理过程注意事项实现效果全自动直接编写控制逻辑全部使用自动给配置默认效果手自一体Configuration、 配置WebMvcConfigurer、 配置WebMvcRegistrations不要标注 EnableWeb…

matlab模糊控制文件m代码实现和基础理论

1、内容简介 略 15-可以交流、咨询、答疑 通过m代码来实现生成模糊文件fis文件 2、内容说明 模糊文件m代码实现和基础理论 matlab模糊控制文件m代码实现和基础理论 模糊文件、m代码和模糊基础理论 3、仿真分析 略 4、参考论文 略 链接:https://pan.baidu.co…

【C++】非类型模板参数 | array容器 | 模板特化 | 模板为什么不能分离编译

目录 一、非类型模板参数 二、array容器 三、模板特化 为什么要对模板进行特化 函数模板特化 补充一个问题 类模板特化 全特化与偏特化 全特化 偏特化 四、模板为什么不能分离编译 为什么 怎么办 五、总结模板的优缺点 一、非类型模板参数 模板参数分两类&#x…

【MongoDB】索引 – 文本索引(用权重控制搜索结果)

一、准备工作 这里准备一些数据 db.books.drop();db.books.insert({_id: 1, name: "Java", alias: "java 入门", description: "入门图书" }); db.books.insert({_id: 2, name: "C", alias: "c", description: "C 入…

[护网杯 2018]easy_tornado 1(两种解法!)

题目环境:发现有三个txt文本文件 /flag.txt/welcome.txt/hints.txt 依此点开 flag在/fllllllllllllag文件中 在hints.txt文件中发现md5计算 md5(cookie_secretmd5(filename)) 并且三个文件中都存在filehash(文件名被哈希算法加密32位小写) 猜…

轻量封装WebGPU渲染系统示例<23>- 可渲染对象添加到多个渲染器Pass节点(源码)

渲染和计算混合系统, 可以看做基于算力驱动设计理念的一种实现。 此系统中,可渲染(rendering)/计算(computing)实体可以任意添加到一个渲染器pass节点。若干个这样的节点相关联,就能构成对应的pass node graph,也就实现了整个3D渲…
最新文章