Redis知识进阶-私人定制组

news2024/9/20 8:06:50

Redis

目录

  • Redis
    • Redis 简介
    • 关键特征
    • Redis不同操作系统安装
      • 在Linux上的安装:
      • 在macOS上的安装:
      • 在Windows上的安装:
    • Redis 数据结构及特点
      • 常用5种及示例:
      • 其他结构
    • 主要功能
      • 总结

Redis 简介

Redis是一个开源的高性能键值对数据库,它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。这些数据结构可以作为数据库的字段来使用,使得Redis不仅可以存储简单的数据,还可以处理更复杂的数据集合。
在这里插入图片描述

关键特征

  1. 内存中数据存储:Redis主要将数据存储在内存中,这使得它能够提供极高的读写速度,通常在毫秒级别。

  2. 持久化:尽管Redis是一个内存数据库,但它提供了持久化机制,可以将内存中的数据保存到磁盘上,以防止数据丢失。

  3. 支持事务:Redis支持事务,可以确保一系列操作的原子性执行。

  4. 丰富的数据类型:Redis不仅支持基本的数据类型,还支持列表、集合等复杂的数据结构,这使得它在处理各种数据场景时非常灵活。

  5. 发布/订阅功能:Redis提供了发布/订阅模式,允许应用程序订阅消息通道,并接收发布到该通道的消息。

  6. 主从复制:Redis支持主从复制,可以用于数据的备份和负载均衡。

  7. 高可用性:通过哨兵系统(Sentinel)和集群(Cluster),Redis可以构建高可用性的系统。

  8. Lua脚本:Redis支持在服务器端执行Lua脚本,这可以用于实现复杂的数据处理逻辑。

  9. 客户端库:Redis拥有丰富的客户端库,支持多种编程语言,使得在各种应用程序中集成Redis变得容易。

  10. 性能监控:Redis提供了多种监控工具和命令,可以帮助管理员监控和优化数据库的性能。
    在这里插入图片描述

Redis不同操作系统安装

Redis的安装过程相对简单,但具体步骤可能会根据操作系统和环境的不同而有所变化。以下是在不同操作系统上安装Redis的一些通用步骤:

在Linux上的安装:

  1. 更新包管理器

    • 对于基于Debian的系统(如Ubuntu),使用:
      sudo apt-get update
      
    • 对于基于RPM的系统(如CentOS),使用:
      sudo yum check-update
      
  2. 安装Redis

    • 对于Debian/Ubuntu:
      sudo apt-get install redis-server
      
    • 对于RPM/CentOS:
      sudo yum install redis
      
  3. 启动Redis服务

    sudo systemctl start redis
    
  4. 设置Redis开机自启

    sudo systemctl enable redis
    
  5. 验证Redis服务状态

    sudo systemctl status redis
    
  6. 配置Redis(可选):

    • 编辑配置文件 /etc/redis/redis.conf 以调整配置选项,如持久化设置、密码保护、最大内存限制等。

在macOS上的安装:

  1. 使用Homebrew

    • 如果尚未安装Homebrew,请先安装Homebrew:
      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
      
    • 使用Homebrew安装Redis:
      brew install redis
      
  2. 启动Redis服务

    • 使用Homebrew服务启动Redis:
      brew services start redis
      
  3. 验证Redis服务状态

    brew services list | grep redis
    

在Windows上的安装:

  1. 下载Redis

    • 访问Redis官网下载Windows版本:https://github.com/MicrosoftArchive/redis/releases
  2. 解压Redis

    • 解压下载的Redis压缩包到一个合适的目录。
  3. 运行Redis服务器

    • 打开命令提示符或PowerShell,导航到Redis目录,然后运行:
      redis-server.exe redis.conf
      
  4. 使用Redis客户端

    • 在另一个命令提示符窗口中,运行Redis客户端以连接到服务器:
      redis-cli.exe
      

请注意,这些步骤提供了一个基本的安装指南。在生产环境中,您可能需要进行更多的配置和优化,例如设置密码保护、调整持久化选项、配置主从复制或Redis集群等。此外,某些操作系统可能需要您手动下载和编译Redis源代码。

在这里插入图片描述

Redis 数据结构及特点

常用5种及示例:

  1. 字符串(Strings)

    • 命令:SET, GET, INCR, DECR
    • 示例:使用SET命令存储用户会话信息,GET命令检索会话信息。
    SET user:session:12345 "session_data"
    GET user:session:12345
    
  2. 列表(Lists)

    • 命令:LPUSH, RPUSH, LPOP, RPOP
    • 示例:使用列表存储用户的最新消息,新消息插入到列表尾部。
    LPUSH user:12345:messages "new_message"
    RPOP user:12345:messages
    
  3. 集合(Sets)

    • 命令:SADD, SREM, SISMEMBER
    • 示例:存储一个用户关注的话题集合。
    SADD user:12345:followed_topics "technology"
    SISMEMBER user:12345:followed_topics "technology"
    
  4. 有序集合(Sorted Sets)

    • 命令:ZADD, ZRANK, ZREVRANK
    • 示例:存储用户排行榜,每个用户有一个分数。
    ZADD leaderboard 90 user:12345
    ZRANK leaderboard user:12345
    
  5. 哈希(Hashes)

    • 命令:HSET, HGET, HMGET
    • 示例:存储用户信息,如用户名、年龄等。
    HSET user:12345 username "JohnDoe" age 30
    HGET user:12345 username
    

在这里插入图片描述

其他结构

  1. 位图(Bitmaps)

    • 命令:SETBIT, GETBIT
    • 示例:使用位图记录用户的签到状态。
    SETBIT user:12345:sign_in 2024 1  # 2024年的第1天签到
    GETBIT user:12345:sign_in 2024
    
  2. 超日志(HyperLogLogs)

    • 命令:PFADD, PFCOUNT
    • 示例:统计独立访客数量。
    PFADD unique_visitors user:12345
    PFCOUNT unique_visitors
    
  3. 地理空间(Geospatial)

    • 命令:GEOADD, GEODIST, GEORADIUS
    • 示例:存储地理位置,并查询附近的地点。
    GEOADD places 39.9524 -75.1638 "PlaceA"
    GEORADIUS places 39.9524 -75.1638 10 km
    
  4. 发布/订阅(Pub/Sub)

    • 命令:PUBLISH, SUBSCRIBE
    • 示例:发布消息到频道,订阅频道接收消息。
    PUBLISH news_updates "New update available"
    SUBSCRIBE news_updates
    
  5. 流(Streams)

    • 命令:XADD, XREAD
    • 示例:使用流存储日志信息。
    XADD log_stream * timestamp 20240813T123000 message "System rebooted"
    XREAD COUNT 10 STREAMS log_stream
    
  6. 键空间通知(Key-space notifications)

    • 命令:CONFIG SET 来启用通知
    • 示例:订阅键空间通知以接收键的过期事件。
    CONFIG SET notify-keyspace-events Ex
    
  7. 脚本(Scripts)

    • 使用EVALEVALSHA执行Lua脚本
    • 示例:执行Lua脚本来计算多个键的总和。
    EVAL "return redis.call('INCR',KEYS[1]) + redis.call('INCR',KEYS[2])" 2 key1 key2
    

在这里插入图片描述

主要功能

  1. 内存中数据存储:Redis将数据存储在内存中,这意味着数据的读写速度非常快,通常在微秒级别,这使得Redis非常适合需要快速访问数据的应用程序。

  2. 数据持久化:尽管数据存储在内存中,但Redis提供了数据持久化的选项,可以通过RDB快照或AOF日志来将内存中的数据保存到磁盘上,以防系统故障导致数据丢失。

  3. 异步I/O:从Redis 6.0开始,Redis引入了多线程I/O处理,用于处理客户端的连接和请求的读写,这些操作是异步的,不会阻塞主线程的命令执行。

  4. 存储会话数据:在Web应用程序中,用户的状态信息通常存储在服务器端的会话中。使用Redis,可以将用户的会话数据存储在内存中,键可以是用户的会话ID。
    在这里插入图片描述

总结

Redis的内存存储功能使其成为一个高性能的数据存储解决方案,适用于需要快速读写访问的用例,如缓存、会话存储、实时分析等。然而,由于内存的成本通常高于磁盘存储,使用Redis时也需要考虑成本效益。

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

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

相关文章

酶促4+2和2+2环加成反应(有机合成与生物合成)-文献精读38

酶促42和22环加成反应:区域与立体选择性的理解与应用 01 有机合成 类似有机化学:狄尔斯–阿尔德反应 狄尔斯–阿尔德反应是[42]环加成反应中最具代表的,由共轭双烯与亲双烯体构建环己烯骨架的经典反应。反应有良好的立体、位置选择性。 该…

3.类和对象(中)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数(就是我们不写,编译器会默认生成一份)。一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0…

江协科技STM32学习笔记(第09章 I2C通信)

第09章 I2C通信 9.1 I2C通信协议 9.1.1 I2C通信 串口通信没有时钟线的异步全双工的协议。 案例:通信协议设计: 某个公司开发了一款芯片,可以干很多事情,比如AD转换、温湿度测量、姿态测量等等。这个芯片里的众多外设也是通过读写寄存器来…

InCDE论文翻译

InCDE论文翻译 Towards Continual Knowledge Graph Embedding via Incremental Distillation 通过增量蒸馏实现持续知识图嵌入 Abstract 传统的知识图嵌入(KGE)方法通常需要在新知识出现时保留整个知识图(KG),这会带来巨大的训练成本。为了解决这个问题&#xf…

掌握网络数据的钥匙:Python Requests-HTML库深度解析

文章目录 掌握网络数据的钥匙:Python Requests-HTML库深度解析背景:为何选择Requests-HTML?什么是Requests-HTML?如何安装Requests-HTML?5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 掌握网络…

[C++][opencv]基于opencv实现photoshop算法可选颜色调整

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 SelectiveColor.hpp #ifndef OPENCV2_PS_SELECTIVECOLOR_HPP_ #define OPENCV2_PS_SELECTIVECOLOR_HPP_#include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "…

笔记:在WPF中OverridesDefaultStyle属性如何使用

一、目的:介绍下在WPF中OverridesDefaultStyle属性如何使用 OverridesDefaultStyle 属性在 WPF 中用于控制控件是否使用默认的主题样式。将其设置为 True 时,控件将不会应用默认的主题样式,而是完全依赖于你在 Style 中定义的样式。以下是如何…

代码随想录算法训练营day39||动态规划07:多重背包+打家劫舍

多重背包理论 描述: 有N种物品和一个容量为V 的背包。 第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。 求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。 本质: …

图论------迪杰斯特拉(Dijkstra)算法求单源最短路径。

编程要求 在图的应用中,有一个很重要的需求:我们需要知道从某一个点开始,到其他所有点的最短路径。这其中,Dijkstra 算法是典型的最短路径算法。 本关的编程任务是补全右侧代码片段中 Begin 至 End 中间的代码,实现 …

543 二叉树的直径

解题思路: \qquad 如果某一个点(非叶子节点)在最长路径上,那么应该有两种情况: \qquad 情况一:该节点为非转折点,最长路径经过其一个子节点 父节点; \qquad 情况二:该…

Rancher 使用 Minio 备份 Longhorn 数据卷

0. 概述 Longhorn 支持备份到 NFS 或者 S3, 而 MinIO 就是符合 S3 的对象存储服务。通过 docker 部署 minio 服务,然后在 Longhorn UI 中配置备份服务即可。 1. MinIO 部署 1.1 创建备份目录 mkdir -p /home/longhorn-backup/minio/data mkdir -p /home/longhor…

24经济师报名照上传技巧,无需下载照片工具

24经济师报名照上传技巧,无需下载照片工具 #中级经济师 #经济师 #高级经济师 #经济师报名照片 #中级经济师报名照片 #经济师考试

SPI通讯协议示例

目录 0x01 SPI通讯特点0x01 硬件SPI示例0x02 软件SPI示例 0x01 SPI通讯特点 SPI在接线方面会拥有片选引脚、时钟引脚、数据引脚,其中数据引脚又分为 MISO和MOSI,分别对应的是 “Master IN Slave Out”(主机输入从机输出) 和 “Master Out Slave IN”(主…

机械学习—零基础学习日志(如何理解线性代数)

零基础为了学人工智能,正在快乐学习,每天都长脑子 如何理解线性代数? 线性代数的本质是代数——代替数字。有时数学里有很多的规律,不以数字形式存在,可以用字幕替代。用一个通用的等式替代我们发现的规律。 代数研…

在VB.net中,CDbl、Double.Parse与Double.TryParse有什么区别

标题 在VB.net中,CDbl、Double.Parse与Double.TryParse有什么区别 正文 在VB.NET中,CDbl、Double.Parse和Double.TryParse都是用于将不同类型的值(主要是字符串)转换为Double类型的方法,但它们之间在用法、性能、错误处…

django学习入门系列之第七点《案例 添加页面》

文章目录 7.6 前端整合标准引入格式案例 添加页面 往期回顾 7.6 前端整合 HTMLCSSjavaScript、jQueryBootStrap(动态效果依赖于jQuery) 标准引入格式 css在上面js动态效果放下面bootstrap依赖于jQuery,所以先要有jQuery,再有bo…

汽车精密设计、无人机外形优化总是遇难题?CFD参数优化详解2来袭

数值仿真的参数优化 在上期文章中,我们给大家带来了机翼多学科优化、拟合试验曲线、一维CFD模型参数的DOE和回归分析三个参数优化案例,本期文章将继续为各位讲解多个 Altair CFD 参数优化案例,一起来看看吧。 案例:汽车排气管形状…

Jenkins链接Gitlab(HttpSSH方式)

文章目录 前言一、安装必要插件1、安装git2、安装Jenkins插件 二、配置git1、http方式(1)基础配置(http方式配置凭证)(2)测试 2、SSH方式配置凭证 总结 前言 为避免汉化导致的显示差异,以下操作…

通过Go示例理解函数式编程思维

一个孩子要尝试10次、20次才肯接受一种新的食物,我们接受一种新的范式,大概不会比这个简单。-- 郭晓刚 《函数式编程思维》译者 函数式编程(Functional Programming, 简称fp)是一种编程范式,与命令式编程(Imperative Programming)、面向对象编…

xlua使用

1. 安装 到 github 移动三个文件夹过去即可 Assets -》Plugins Assets -》Xlua Tools 移动到 unity里面的Assets目录即可 会在工具栏出现Xlua即安装成功 2. 引入基础类 ABMgr.cs using System.Collections; using System.Collections.Generic; using UnityEngine; using Un…