【redis】初识redis入门,基础部署以及介绍
本站以分享各种运维经验和运维所需要的技能为主
《python零基础入门》:python零基础入门学习
《python运维脚本》: python运维脚本实践
《shell》:shell学习
《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战
《k8》暂未更新
《docker学习》暂未更新
《ceph学习》ceph日常问题解决分享
《日志收集》ELK+各种中间件
《运维日常》运维日常
《linux》运维面试100问
《DBA》db的介绍使用(mysql、redis、mongodb...)
一、Redis简介
1.redis是什么
CopyRedis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品。 Redis采用内存(In-Memory)数据集(DataSet) 。 支持多种数据类型。 运行于大多数POSIX系统,如Linux、*BSD、OS X等。 redis就是非关系型数据库的一种,存储方式是:key:value
2.redis的作用
Copy1.会话保持(键过期) 2.缓存(放在数据库前面,memcache,mongodb) 3.消息队列(kafka)
3.为什么要用Redis
Copy1.redis功能全面 2.redis企业使用率高
4.redis优点
Copy1.高速读写将所有数据存储在内存,单线程服务,使用C语言 2.部署简单,使用稳定 3.数据类型丰富String: 字符串类型Hash: 哈希类型List: 列表类型Set: 集合类型Sorted set: 顺序集合类型 4.支持持久化将内存的数据写入磁盘 5.多种内存分配及回收策略 6.支持事物、锁 7.消息队列、消息订阅 8.支持高可用哨兵模式 9.支持分布式分片集群 10.支持的客户端语言很多java,php,python,nodejs,C语言 11.redis为什么速度快呢:· 因为存储在内存当中,所以读写数据的时候不会受到磁盘i/o速度的限制,所以速度极快 12.redis为什么要部署多实例呢:· 因为redis是使用单线程方式,所以无法发挥多核cpu的性能,所以可能通过多实例来完善 13.为什么redis要基于单线程呢?· 单线程在每秒就能抗住10万+的并发,速度已经非常快了,所以就没有考虑多线程,毕竟也比较复杂,但是在redis4.0版本之后就 在某些功能上进行多线程操作
5.redis帮助
Copy官方网站:https://redis.io/ 下载网站:http://download.redis.io/releases/ 帮助网站:http://redisdoc.com/
6.缓存服务对比
Copy#Memcached: 1.优点:高性能读写、单一数据类型、支持客户端式分布式集群、一致性hash多核结构、多线程读写性能高。 2.缺点:无持久化、节点故障可能出现缓存穿透、分布式需要客户端实现、跨机房数据同步困难、架构扩容复杂度高 #Redis: 1.优点:高性能读写、多数据类型支持、数据持久化、高可用架构、支持自定义虚拟内存、支持分布式分片集群、单线程读写性能极高 2.缺点:多线程读写较Memcached慢 #Tair: 1.优点:高性能读写、支持三种存储引擎(ddb、rdb、ldb)、支持高可用、支持分布式分片集群、支撑了几乎所有淘宝业务的缓存。 2.缺点:单机情况下,读写性能较其他两种产品较慢 #对比结论: 1.Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)。 2.Redis:单核缓存服务,在单节点情况下,更加适合少量用户,多次访问的应用场景。
二、Redis使用场景
Copy1.缓存放在数据库前面 2.会话保持登录cookie、session折扣券,代金券 3.排行榜 4.计数器论坛帖子点赞点踩 5.社交软件QQ共同好友,微博共同爱好 6.消息队列结合ELK做日志收集
三、redis搭建
1.下载软件包
Copy[root@db01 ~]# rz redis-3.2.12.tar.gz 或者 [root@db01 ~]# wget http://download.redis.io/releases/redis-3.2.12.tar.gz
2.安装依赖
Copy[root@db01 ~]# yum install -y gcc gcc-c++
3.解压移动
Copy[root@db01 ~]# tar xf redis-3.2.12.tar.gz [root@db01 ~]# mv redis-3.2.12 /usr/local/ [root@db01 ~]# ln -s /usr/local/redis-3.2.12 /usr/local/redis
4.安装
Copy[root@db01 ~]# cd /usr/local/redis [root@db01 redis]# make
5.启动redis
Copy[root@db01 redis]# ./src/redis-server & [root@db01 redis]# netstat -lntp tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 11759/./src/redis-s
6.连接redis
Copy#配置环境变量 [root@db01 redis]# vim /etc/profile.d/redis.sh export PATH=/usr/local/redis/src:$PATH #连接 [root@db01 redis]# redis-cli 127.0.0.1:6379>
7.关闭redis
Copy[root@db01 redis]# redis-cli shutdown 11759:M 03 Aug 10:20:20.535 # User requested shutdown... 11759:M 03 Aug 10:20:20.535 * Saving the final RDB snapshot before exiting. 11759:M 03 Aug 10:20:20.546 * DB saved on disk 11759:M 03 Aug 10:20:20.546 # Redis is now ready to exit, bye bye... [1]+ Done ./src/redis-server [root@db01 redis]# redis-cli 127.0.0.1:6379> shutdown 11851:M 03 Aug 10:20:59.580 # User requested shutdown... 11851:M 03 Aug 10:20:59.580 * Saving the final RDB snapshot before exiting. 11851:M 03 Aug 10:20:59.584 * DB saved on disk 11851:M 03 Aug 10:20:59.584 # Redis is now ready to exit, bye bye... not connected> quit [1]+ Done ./src/redis-server
四、redis配置文件
1.配置
Copy#默认的配置文件 [root@db01 redis]# pwd /usr/local/redis [root@db01 redis]# ll -rw-rw-r-- 1 root root 46695 Jun 13 2018 redis.conf #创建reids配置文件目录 [root@db01 redis]# mkdir /service/redis/6379 -p #编写配置文件 [root@db01 redis]# vim /service/redis/6379/redis.conf bind 172.16.1.51 127.0.0.1 #绑定的主机地址 port 6379 #端口 daemonize no #守护进程模式启动 pidfile /service/redis/6379/redis_6379.pid #指定pid文件 loglevel notice #指定日志级别 logfile /service/redis/6379/redis_6379.log #指定日志文件 databases 16 #设置数据库的数量,默认数据库为0 dbfilename redis_6379.rdb #指定本地持久化文件的文件名,默认是dump.rdb dir /etc/redis/6379 #持久化数据文件存储地址
2.指定配置文件启动
Copy[root@db01 redis]# redis-server /service/redis/6379/redis.conf
五、redis操作
1.基本操作
Copy1.连接redis[root@db01 redis]# redis-cli 127.0.0.1:6379> 2.查看所有数据127.0.0.1:6379> keys *(empty list or set)#查看时注意不要轻易使用,如想查看数据,先查看数据量DBSIZE127.0.0.1:6379> DBSIZE(integer) 2018041 3.添加数据127.0.0.1:6379> set k1 v1OK 4.查看数据127.0.0.1:6379> keys *1) "k1"127.0.0.1:6379> get k1"v1" 5.删除数据127.0.0.1:6379> keys *1) "k1"127.0.0.1:6379> DEL k1(integer) 1127.0.0.1:6379> keys *(empty list or set) 6.修改数据127.0.0.1:6379> set k1 v1OK127.0.0.1:6379> set k1 v11111OK127.0.0.1:6379> get k1"v11111" 7.追加数据127.0.0.1:6379> APPEND k1 000000(integer) 12127.0.0.1:6379> get k1"v11111000000" 8.切换库127.0.0.1:6379> SELECT 1OK127.0.0.1:6379[1]> SELECT 2OK127.0.0.1:6379[2]> SELECT 3OK127.0.0.1:6379> SELECT 16(error) ERR invalid DB index
2.密码的设置
Copy1.配置文件配置密码[root@db01 redis]# vim redis.conf requirepass 123 2.使用密码连接[root@db01 redis]# redis-cli -a 123 3.登陆后输入密码[root@db01 redis]# redis-cli127.0.0.1:6379> AUTH 123OK127.0.0.1:6379> DBSIZE(integer) 2018041 4.redis连接后获取密码127.0.0.1:6379> CONFIG GET requirepass1) "requirepass"2) "123" 5.redis连接后修改密码127.0.0.1:6379> CONFIG set requirepass 234OK[root@db01 redis]# redis-cli127.0.0.1:6379> DBSIZE(error) NOAUTH Authentication required.127.0.0.1:6379> auth 123(error) ERR invalid password127.0.0.1:6379> auth 234OK
3.通用操纵
Copy1.判断key是否存在127.0.0.1:6379> EXISTS k1(integer) 1 #存在则返回1127.0.0.1:6379> EXISTS k2(integer) 0 #不存在则返回0 状态码: 0 表示这个key不存在 1 表示这个key存在 N 表示有的N个key存在 2.修改key的名字127.0.0.1:6379> KEYS *1) "k1"127.0.0.1:6379> RENAME k1 k100OK127.0.0.1:6379> KEYS *1) "k100" 3.查看数据类型127.0.0.1:6379> TYPE k100string 4.设置生存时间#以秒为单位127.0.0.1:6379> EXPIRE qiudao 10(integer) 1#以毫秒为单位127.0.0.1:6379> PEXPIRE k100 10000(integer) 1 5.查看生存时间127.0.0.1:6379> TTL k100(integer) 1 #正整数生存时间倒计时127.0.0.1:6379> TTL k100(integer) -1 #-1代表没有设置生存时间127.0.0.1:6379> TTL k100(integer) -2 #代表设置过生存时间已删除,已过期 6.取消生存时间127.0.0.1:6379> TTL qiudao(integer) 93127.0.0.1:6379> PERSIST qiudao(integer) 1127.0.0.1:6379> TTL qiudao(integer) -1
六、持久化
1.什么是持久化
Copy将内存中的数据写入到磁盘,永久保存
2.持久化的模式
Copy1.RDB模式 2.AOF模式
3.RDB和AOF优缺点
Copy1.RDB和AOF优缺点 RDB: 可以在指定的时间间隔内生成数据集的时间点快照,把当前内存里的状态快照到磁盘上 优点: 压缩格式/恢复速度快,适用于备份,主从复制也是基于rdb持久化功能实现 缺点: 可能会丢失数据 AOF: 类似于mysql的binlog,重写,、每次操作都写一次/1秒写一次,文件中的命令全部以redis协议的格式保存,新命令会被追加到文件的末尾 优点: 安全,有可能会丢失1秒的数据 缺点: 文件比较大,恢复速度慢
4.RDB模式
Copy可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
1)RDB工作模式
Copy1.默认情况下,Redis保存数据集快照到磁盘,名为dump.rdb的二进制文件。你可以设置让Redis在N秒内至少有M次数据集改动时保存数据集,或者你也可以手动调用SAVE或者BGSAVE命令。 2.在上文中我们已经在配置文件中做过对应的配置: 例如,这个配置会让Redis在每个60秒内至少有1000次键改动时自动转储数据集到磁盘: save 60 1000 3.当 Redis 需要保存 dump.rdb 文件时,服务器执行以下操作: Redis 调用 fork() ,同时拥有父进程和子进程。 子进程将数据集写入到一个临时的 RDB 文件中。当子进程完成对新 RDB 文件的写入时, Redis 用新RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。 4.这种方式使得 Redis 可以从写时复制机制中获益。
2)配置RDB持久化
Copy#编辑配置文件 [root@db01 ~]# vim /service/redis/6379/redis.conf bind 172.16.1.51 127.0.0.1 port 6379 daemonize yes pidfile /service/redis/6379/redis_6379.pid loglevel notice logfile /service/redis/6379/redis_6379.log #设置redis密码 requirepass 123 #持久化数据文件存储位置 dir /etc/redis/6379 #rdb持久化数据文件名 dbfilename dump.rdb #900秒(15分钟)内有1个更改 save 900 1 #300秒(5分钟)内有10个更改 save 300 10 #60秒(1分钟)内有10000个更改 save 60 10000
3)使用RDB文件
Copy1.先停止redis 2.将rdb文件放到指定目录下 3.启动redis 结论: 1.执行shutdown的时候,内部会自动执行bgsave,然后再执行shutdown 2.pkill kill killall 都类似于执行shutdown命令.会触发bgsave持久化 3.恢复的时候,rdb文件名称要和配置文件里写的一样 4.如果没有配置save参数,执行shutdown不会自动bgsave持久化 5.如果没有配置save参数,可以手动执行bgsave触发持久化保存 6.kill -9 redis 不会出发持久化
相关文章:
【redis】初识redis入门,基础部署以及介绍
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
数据库基础 -- 数据库约束
数据库基础 – 数据库约束 1.约束 1.1 概念 约束是用于强制数据库中数据 完整性 和 一致性 的规则。它们定义了对表中数据的限制,确保数据的有效性和正确性,实际上就是表中数据的限制条件。 1.2 分类 1.2.1 完整性约束 主键约束(Primary Key Const…...

U盘文件或目录损坏无法读取?专业恢复策略全解析
U盘困境:文件目录的隐形危机 在日常的数字生活中,U盘作为便捷的数据存储与传输工具,扮演着至关重要的角色。然而,当U盘中的文件或目录突然遭遇损坏,导致无法被正常读取时,这无疑给用户带来了极大的困扰。这…...

dpdk实现udp协议栈
使用DPDK实现UDP用户态协议栈,实现流程中包括: 三类线程 1、收发包线程 2、用户态协议栈线程 3、udp服务端线程 两类缓冲区: 1、协议栈收包缓冲区和协议栈发包缓冲区 2、udp收包缓冲区和udp发包缓冲区 协议栈缓冲区中存储的数据是str…...

Shell编程——基础语法(2)和 Shell流程控制
文章目录 基础语法(2)echo命令read命令printf命令test命令 Shell流程控制if-else语句for 循环while 语句until 循环case ... esac跳出循环 基础语法(2) echo命令 Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于…...

Python基础教程(二)字符串和函数
6.字符串 6.1 字符串的表示方式 6.1.1 普通字符串 普通字符串指用单引号()或双引号(”")括起来的字符串。例如:Hello或"Hello" >>> Hello Hello >>> "Hello" Hello >>> s\u0048\u0065\u006c\u006c\u006f >>> …...

智算新风向丨趋动科技获中国信通院泰尔实验室首张智算资源池化能力泰尔测评证书
近日,趋动科技“OrionX AI算力资源池化软件”经中国泰尔实验室依据《FG-Z14-0172-01智算资源池化平台测试方案》评估测试,获得智算资源池化能力泰尔测评证书,成为该领域首个完成此评价的产品。 图1.OrionX通过智算资源池化平台评测 随着AI大…...

计算机基础(Windows 10+Office 2016)教程 —— 第4章 计算机网络与Internet(上)
第4章 计算机网络与Internet 4.1 计算机网络概述4.1.1 计算机网络的定义4.1.2 计算机网络的发展4.1.3 计算机网络的功能4.1.4 计算机网络体系结构和TCP/IP 参考模型 4.2 计算机网络的组成和分类4.2.1 计算机网络的组成4.2.2 计算机网络的分类 4.3 网络传输介质和通信设备4.3.1 …...

MES系统在数字化转型中的核心作用与影响
数字化转型是企业利用数字技术改变其业务模式、运营方式、组织结构、产品服务等方面的过程,旨在提高效率、降低成本、增强竞争力并实现可持续发展。数字化转型涉及多个层面,主要包括以下几个方面: 数字化转型转什么 转战略:由构…...
装修施工注意事项
1 地漏保护 咋墙拆改时,一定要用保护盖把所有的地漏下水管道都拧紧 2 卫生间防水做完,必须要先用水泥砂浆做好保护层再贴,不然后续施工,不小心破坏防水层,以后漏水后悔都晚了。 3 入户门口处,一定要用…...
【Docker学习记录】
Docker学习记录 目录 1. Windows上使用wsl1.1 安装docker后遇到的一些疑惑1.2. wsl的一些相关命令1.3. 补一点,wsl的作用 2. docker一些常用的命令2.1 构建docker镜像2.2 运行镜像 3. Dockerfile的编写3.0 docker的一些概念3.0.1 容器的分层3.0.2 COPY-ON-WRITE 3.…...

互联网政务应用安全管理规定
互联网政务应用安全管理规定 (2024年2月19日中央网络安全和信息化委员会办公室、中央机构编制委员会办公室、工业和信息化部、公安部制定 2024年5月15日发布) 第一章 总则 第一条为保障互联网政务应用安全,根据《中华人民共和国网络安全法…...
HarmonyOS开发商城首页实现
目录 一:功能概述 二:代码实现 三:效果图 一:功能概述 这一节我们主要在鸿蒙OS系统中实现的一个底部导航功能,并在首页底部使用TabSwitch组件进行导航切换。同时,首页采用Search组件实现商品搜索框,Scroll和Swiper组件实现图片轮播功能,以展示推荐内容或图片。 1:…...

QtQuick Text-文本样式
属性 Text项目的style属性可以设置文本的样式。 支持的文本样式有: Text.Normal(默认)Text.OutlineText.RaisedText.Sunken 示例 import QtQuickRow{spacing: 10padding: 10Text {font.pointSize: 40text: "Normal"}Text {font…...
人工智能未来展望
深入剖析人工智能:现状、挑战与未来展望 在当今这个日新月异的科技时代,人工智能(AI)无疑是最为耀眼的明星之一。它以其独特的魅力,正引领着一场前所未有的技术革命,深刻地改变着人类社会的方方面面。本文…...

Pymol开源版安装 新版 3.0 / 3.1 Windows安装Pymol开源版
PyMOL 简介 PyMOL 是一个开源的分子可视化系统,被广泛应用于结构生物学中。它允许用户可视化分子结构,并创建高质量的蛋白质、核酸和其他大分子的3D图像。多年来,PyMOL不断发展,新版本引入了更多的功能和改进。 PyMOL 3.0 / 3.1…...

记录一次环境的安装
目录 新添加的代码 代码解释 为啥ubuntu用debian软件源 为啥修改sources.list.d S权限意思 php缺少和数据库连接的模块 使用root登陆数据库1698错误 字段解释 auth_socket解释 使用root登陆数据库方法 详细解释 首先在安装的时候,有一个dockerfile文件&a…...

浏览器用户文件夹详解 - WebData(八)
1.WebData简介 1.1 什么是WebData文件? WebData文件是Chromium浏览器中用于存储用户表单数据、自动填充信息和支付信息的一个重要文件。每当用户在浏览器中填写表单或保存支付信息时,这些数据都会被记录在WebData文件中。通过这些记录,浏览…...
ijkplayer 自定义协议播放加密内容 Android
想对播放的音视频进行加密,防止资源被盗用,该怎么办呢? 这篇文章从自定义协议的角度来提供一中实现思路。在 ijkplayer 的基础上,通过实现自定义协议对文件进行解密。边解边播,以此为基础,还可以实现在线资…...
【kill】Centos/Linux 如何杀死那该死的进程?
简介 系统版本:Centos7.6 kill 命令发送指定的信号到指定的进程或者进程组。如果该信号没有指定,则发送SIGTERM信号(15),即终止信号。如果SIGTERM信号(15)无法终止,可使用SIGKILL&am…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...