Redis基本概念

什么是Redis

官方文档

Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSIC 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。

传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。

存储位置:内存

内存和硬盘的区别:内存:存储速度快,断电数据消失

磁盘:存储速度慢,持久化存储

使用场景:

       Redis的数据key-value类型,存储在内存中的,因此Redis的读写速度快,每秒可以处理超过十万次的读写操作所以常应用于数据量非常的大,查询频率高的情况。

        1.app首页流量高峰,大型秒杀活动,高速的读写活动以及大量的数据会将MySQL压垮

        2.不需要持久化存储的操作,短信验证码,登录验证码,点赞数(点赞取消动作频繁,且高并发场景)

        3.分布式锁

        4.分布式缓存

数据结构:key-value键值对方式存储

        key:string类型

        value:string,hash,list,set,zset

        以及两种特殊的数据类型:Geospatial,BloomFilter(布隆过滤器)

String(最常用)

        incr指令通常用于点赞操作,A,B在刷视频时,在刷到同一个视频时,该视频的点赞数为200,AB同时点赞各自自增为201,最终新值总为202,这就是原子自增性。

        常见指令

set name zhencong --存放字符串键值对

mset name zhencong age 18 --批量存放键值对

SETNX name zhencong --如果不存在key为name,那么就设置value(分布式锁的原理)

get name -- 获取key

mget name age --批量获取key

DEL key -- 删除key

expire key 60 --设置过期时间,单位为秒

INCR key -- 将key中存储的数字加1

DECR key -- 将key中存储的数字减1

INCRBY key 2 --将key中存储的值都加上2

DECRBY key 2 --将key中存储的值都减去2

set name 张三 age  18  sex 男 

在部分场景中,可以当做存储对象来使用

        使用场景

        小视频文章等点赞,浏览量

HASH(哈希)
        常见指令

hset hash name zhencong --设置值,

hget hash name -- 获取值

hmset hash name zhencong age 18 --批量设置

hmget hash name age --批量获取

hgetall hash 获取key的所有值

hkeys hash 获取hashmap中所有的key

hvals hash 获取hashmap中所有的value

        使用场景

        存储部分数据的更改,用户操作时暂存用户数据信息

List(列表)
        常见指令

rpush myList valule1                    --向 list 的右侧(list的尾部)添加元素

rpush myList value2 value3         --向list的右侧(list的尾部)添加多个元素

lpush myList valule1                    --向 list 的头部(左侧)添加元素

lpush myList value2 value3         --向list的头部添加多个元素

lpop myList                                 # 将 list的尾部(最左边)元素取出

rpop myList2 value1                 --尾插

        特殊使用

lpush+lpop=Stack(栈)   //rpush+rpop

lpush+rpop=Queue(队列)

lpsh+ltrim=Capped Collection(有限集合)

lpush+brpop=Message Queue(消息队列)

        使用场景

        更新日志等,与此同时搭配LTRIM保存最新的n条日志。list的使用较为特殊,不同组合搭配使用成为栈,队列等数据结构

Set(集合)

        当你需要存储一个没有重复数据的列表时就可以选择set,同时set也可以判断某个数据在不在集合里面。(和list的对比:无序,去重)

        使用场景

        好友列表

Zset(有序集合)

        有序的字符串集合,无重复数据(有序,去重)

        使用场景:排行榜。

Geospatial

        使用场景:比如美团的地图部分使用,可以表示二维坐标,支持范围查询和距离查询

BloomFilter

        使用场景:海量数据的查找,但是概率不是百分百

在该数据结构中,存储的是hash值,所以使得占用空间小,但是对于不同对象,hash值存在相同的可能,这也是不能达到百分百的原因。

这也是为什么重写hashcode和重写equals必须搭配的原因

正常情况下,对比hash值后会对比二者的属性,因为hash值存在相等的可能性,如果只是单纯的对比hash,那么判断两个对象相等就会出错。

和mysql的区别

      相对于Redis来说,MySQL数据存储在磁盘中,读写速度慢,对于较大数据量以及高并发场景,很容易压垮MySQL,与此同时MySQL索引文件采用的是b+树,查询时间为O(logn),Redis底层结构采用的是k-v形式,时间复杂度仅为O(1),在部分业务场景中,可以采用Redis作为缓存。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最长异或路径 ---- (字典树求异或最大)

目录 最长异或路径: 题目大意: 思路解析: 代码实现: 最长异或路径: 题目大意: 思路解析: 现在假设有一棵这样的树,我们并不关心每条边的路径权值为多少,假设划红线的…

WPS/Office 好用的Word插件-查找替换

例如:一片文档:…………泰山…………泰(少打了山字)………… 要是把“泰”查找替换为“泰山”,就会把前面的“泰山”变成“泰山山”,这种问题除了再把“泰山山”查找替换为“泰山”,有没有更简单…

MSF编译中遇到的问题整理,视觉惯性松组合//视觉惯性松耦合

首先感谢 https://blog.csdn.net/xiaoxiaowenqiang/article/details/81192045#comments_31558035 神帖需要进一步更新,希望大家可以给作者打钱,然后可诶诒理直气壮的顺便push原作者更新 下面是readme的内容 ethzasl_msf [ROS] 多传感器卡尔曼融合框架 E…

吴恩达deeplearning.ai:机器学习项目的完整周期伦理

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 语音识别部署公平、偏见、伦理 这节博客中,我们主要看看构建一个机器学习的完整周期是什么,也就是说,当你想构建一个有价值的机器学习系统时&am…

Freecad Assembly4装配模型设计入门

一、基本信息 本文内容:学习Assembly4装配模型设计功能。 2024年3月7日 最新版Freecad 0.21.2 最新版 Assembly4 0.50.8 下载地址:stoneold/FreeCAD_Assembly4 最新版 Assembly4 示例教程 下载地址:FreeCAD_Examples: Freecad Assmbly4 …

菜品上架与展示

菜品上架与展示 1、功能简介 1、实现菜品的上架 2、实现菜品的展示 2、代码展示 2.1 food类 package com.ham.pkg.ArryList;public class Food {private String name;private double price;private String desc;public Food(String name, double price, String desc) {this.…

CubeMX使用教程(3)——GPIO

在第二章我们完成了点灯仪式,这次我准备尝试把按键和灯结合起来,做一次GPIO的综合测试 实验任务为:按下按键1(B1),第1个灯(LD1)亮; 按下按键2(B2)…

Vue3.0 vue.js.devtools无法显示Pinia调试工具

之前的配置方式: app.use(createPinia()) app.mount(#app) 更新配置方式: app.use(createPinia()).mount("#app") 设置之后即可显示调试工具

25考研资料PDF汇总

资料V馊public号ZL研知己 V馊public号ZL研知己 25考研资料PDF汇总

PTA L2-015 互评成绩

学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输入格式&#xf…

好物周刊#44:现代终端工具

https://github.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. Github-Hosts 通过修改 Hosts 解决国内 Github 经常抽风访问不到,每日更新。 2. 餐饮点餐商城 针对…

unity Game视图看不到贴花,但是在Scene视图能看到

解决方法:找到URP的配置文件 ,修改Quality–RederScale为1,就可以了,这是unity 的bug,2022版本以后就没有这个问题了

阿珊带你深入理解 async/await 函数

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Android Framework 通过脚本动态修改应用私有文件执行权限

你只活一次 要悦己 脚本配置 Android_source/device/sprd/***/test/test_chmod.rc service test_chmod /vendor/bin/test_chmod.shuser rootdisabledoneshoton property:sys.test_chmodtruestart test_chmodAndroid_source/device/sprd/***/test/test_chmod.sh #!/system/bin/…

Codeforces Round 932 (Div. 2)D. Exam in MAC 正难则反,容斥,对顺序求一些值

Problem - D - Codeforces 目录 题意: 思路: 总的对数: xyai: y-x ai: 两个都不符合: 参考代码: 题意: 给你一个n个数的集合a,和整数c 求0~c中有多少对x,y的组合可以使得xy与y-x都不出…

Mysql案例之GROUP_CONCAT函数详解

Hello,大家好,我是灰小猿,一个超会写bug的程序员! 今天这篇文章记录一个最近开发中遇到的mysql实战场景,觉得还挺典型的,就在此做一下记录。 先看一下举例场景: mysql中学生表与学科表通过关…

非线形优化 Matlab和Python (含01规划)

MATLAB:fmincon 在matlab中,一般使用fmincon来解决非线性优化问题 [x,fval,exitflag,output,lambda,grad,hessian]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 一般使用: [x,fval,exitflag]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,non…

Python 和 Google Colab 从 Sentinel-3 图像下载并可视化地表温度和 NDVI

与 Sentinel-2 和 Landsat 等卫星的光学图像相比,下载和处理 Sentinel-3 图像,尤其是地表温度 (LST) 具有挑战性。这是由于存储数据的特定 NetCDF 格式造成的,并且 LST 值的正确投影需要一些额外的工作。在本教程中,我将在 Google Colab 环境中提供 Python 代码,以便于下载…

贪心算法详解与任务调度问题Demo

任务调度问题Demo 任务调度问题是一类常见的优化问题,其目标是在有限的时间内合理安排任务的执行顺序,以最大化任务的完成数量或满足其他优化目标。在这个Demo中,我们将考虑一个简化版的任务调度问题:有一系列任务,每个…

成为大佬之路--linux软件安装使用第000000032篇--linux docker安装文件系统

总体感受 能用,仅仅是能用,不太好用,ui略丑 安装 docker run -d --restart always -p 10018:8080 -v /Users/ascendking/sofewares/mikochi/data:/data -e DATA_DIR"/data" -e USERNAMEadmin -e PASSWORDadmin zer0tonin/mik…