当前位置: 首页 > news >正文

Redis基本操作介绍

1. 安装与启动
  • 安装:Redis支持多种操作系统,包括Linux、Windows等。从Redis官网下载相应的安装包,并按照系统要求进行安装。
  • 启动
    • Linux系统:在终端中,进入Redis的安装目录,运行redis-server命令启动Redis服务。如果需要后台启动或设置密码,可以修改配置文件(如redis.conf)。
    • Windows系统:双击redis-server.exe文件启动Redis服务。或者,在命令行中使用redis-server.exe命令,并指定配置文件路径(如果使用了非默认配置)。
2. 连接Redis
  • 使用redis-cli命令连接到Redis服务器。在命令行中输入redis-cli,然后回车。如果Redis服务器设置了密码,连接时可以使用-a参数指定密码,如redis-cli -a yourpassword
3. 基本数据类型操作
  • 字符串(string)
    • 设置键值对SET key value [EX seconds] [PX milliseconds] [NX|XX]
      • SET命令用于设置键值对。
      • EXPX选项用于设置键的过期时间(以秒或毫秒为单位)。
      • NX选项表示仅当键不存在时才设置。
      • XX选项表示仅当键存在时才设置。
    • 获取键值GET key
      • GET命令用于获取指定键的值。
    • 删除键值对DEL key
      • DEL命令用于删除一个或多个键及其对应的值。
    • 追加值到字符串末尾APPEND key value
      • APPEND命令将指定的值追加到已存在键的值的末尾。
    • 字符串递减指定值DECRBY key decrement
      • DECRBY命令将键的整数值按指定的数值递减。
    • 获取字符串子串GETRANGE key start end
      • GETRANGE命令返回键的值的子串,其中startend是子串的起始和结束位置(包含start,不包含end)。
    • 替换字符串子串SETRANGE key offset value
      • SETRANGE命令用指定的值替换键的值的子串,其中offset是替换的起始位置。
    • 设置键的值并设置过期时间SETEX key seconds value
      • SETEX命令设置键的值,并为键设置过期时间(以秒为单位)。
    • 只有在键不存在时设置键的值SETNX key value
      • SETNX命令在键不存在时设置键的值。
    • 字符串递增INCR key
      • INCR命令将键的整数值递增1。如果键不存在,它会先被初始化为0。
  • 列表(list)
    • 从列表左边插入一个或多个元素LPUSH key value [value ...]
      • 这个命令将一个或多个值插入到已存在的列表的左边。如果键不存在,则创建一个新的列表。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
    • 从列表右边插入一个或多个元素RPUSH key value [value ...]
      • LPUSH类似,但将值插入到列表的右边。
  • 集合(set)
    • 添加元素到集合:SADD key member [member ...]
    • 移除集合中的元素:SREM key member [member ...]
    • 获取集合中的所有元素:SMEMBERS key
  • 有序集合(sorted set)
    • 添加元素到有序集合,并指定分数:ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
    • 移除有序集合中的元素:ZREM key member [member ...]
    • 获取有序集合中的元素:ZRANGE key start stop [WITHSCORES](可以附加WITHSCORES参数来获取元素的分数)
  • 哈希(hash)
    • 在哈希表中设置字段的值:HSET key field value
    • 获取哈希表中字段的值:HGET key field
    • 移除哈希表中一个或多个字段:HDEL key field [field ...]
    • 获取哈希表中所有字段和值:HGETALL key
4. 其他常用操作
  • 查看所有键KEYS patternpattern是一个模式,可以使用通配符)
  • 删除一个或多个键DEL key [key ...]
  • 切换数据库SELECT indexindex是数据库的索引号,Redis默认有16个数据库,索引从0开始)
  • 清空当前数据库FLUSHDB
  • 清空所有数据库FLUSHALL
5. 安全性与配置
  • 设置密码:在Redis的配置文件(如redis.conf)中,找到requirepass配置项并设置密码,以增强Redis的安全性。
  • 配置持久化:Redis支持RDB(快照)和AOF(追加文件)两种持久化方式。可以根据需要配置持久化选项,以防止数据丢失。
6. 集群与分片
  • 主从复制:Redis支持主从复制模式,可以实现数据备份和读写分离。主节点负责写入数据,从节点负责读取数据。
  • 分片集群:当数据量非常大时,可以使用Redis的分片集群功能将数据分散到多个Redis节点上,以提高系统的整体性能和容错能力。
7. 性能调优与监控
  • 性能调优:通过调整Redis的配置参数(如内存限制、连接数限制等),可以优化Redis的性能。
  • 监控:Redis提供了多种监控工具(如Redis Monitor、Redis Insight等),可以实时监控Redis的运行状态和数据变化。

8.优缺点

优点

  1. 高性能
    • Redis是基于内存的数据库,读写速度非常快,特别适用于需要高速响应的场景。
    • 支持多种数据结构,如字符串、列表、集合、哈希表等,这些数据结构都有高效的读写操作。
    • 使用单线程模型,避免了多线程的上下文切换开销,且内部优化得当,使得Redis即使在单线程下也能达到很高的性能。
  2. 丰富的数据结构
    • Redis支持多种数据结构,可以满足各种复杂场景的需求。
    • 这些数据结构包括字符串、哈希表、列表、集合、有序集合等,使得Redis在存储和操作数据上非常灵活。
  3. 简单易用
    • Redis提供了丰富的命令和数据类型,使得开发者可以快速上手并实现各种功能。
    • 同时,Redis也支持多种编程语言,如C、C++、Java、Python等,使得Redis的应用场景更加广泛。
  4. 持久化支持
    • Redis支持将数据持久化存储到本地磁盘中,包括RDB(快照)和AOF(Append Only File)两种方式。
    • 这保证了Redis在重启或发生故障时不会丢失数据。
  5. 支持分布式
    • Redis可以通过主从复制的方式实现数据的高可用性和可扩展性。
    • 同时,Redis也支持集群模式,可以方便地实现数据的分布式存储和访问。
  6. 事务支持
    • Redis支持事务,可以一次执行多个命令,保证了操作的原子性。

缺点

  1. 数据量受限
    • 由于Redis是基于内存的存储系统,其数据量受到物理内存的限制。
    • 当数据量过大时,可能需要增加更多的内存或采用其他存储方案。
  2. 持久化性能损耗
    • 当开启持久化功能时,Redis的性能会受到一定影响。
    • 尤其是使用RDB持久化方式时,由于需要定期生成快照文件,可能会消耗较多的CPU和I/O资源。
  3. 单线程模型
    • 虽然Redis的单线程模型在高并发场景下表现良好,但在某些情况下可能会成为瓶颈。
    • 例如,当需要执行复杂的计算或网络操作时,单线程模型可能会导致Redis的性能下降。
  4. 数据安全性
    • Redis默认不提供用户验证机制,需要用户手动配置密码来保护数据安全。
    • 此外,由于Redis的数据存储在内存中,因此需要额外的安全措施来防止数据泄露或被恶意攻击。
  5. 不支持复杂查询
    • 与关系型数据库相比,Redis的查询功能相对简单。
    • 虽然Redis支持一些基本的查询操作,但对于复杂的查询需求,可能需要结合其他数据库或工具来实现。

相关文章:

  • CATIA入门操作案例——创成式曲面设计案例,吹风机的绘制,多截面曲面的绘制,曲面偏移和修剪
  • SQLserver前五讲课堂笔记
  • GaussDB的数种形态
  • 谷粒商城实战(033 业务-秒杀功能4-高并发问题解决方案sentinel 1)
  • idea如何使用git reset进行回退以及如何使用git stash将暂存区文件储藏,打包后重新恢复暂存区文件
  • 【EBS】通过SQL查找所有的定时请求
  • 【HarmonyOS】逻辑类中调用通用弹窗的处理
  • 旅游卡免费旅游的使用条件有哪些?
  • Python自动化测试框架:unittest与pytest的深度对比
  • Android ServiceManager和它的兄弟们
  • 来自中国信通院的认可!上海斯歌受邀加入“EP-Link 智能流程推进计划”
  • MongoDB UPDATE使用$setOnInsert为新插入数据设置默认值
  • 6.7.32 用于计算机辅助检测和诊断研究的精选乳房 X 线摄影数据集
  • 12. Django 第三方功能应用
  • 私有云数据库特征
  • [译] React v16.8: 含有Hooks的版本
  • AHK 中 = 和 == 等比较运算符的用法
  • ES6系统学习----从Apollo Client看解构赋值
  • express如何解决request entity too large问题
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • KMP算法及优化
  • PAT A1017 优先队列
  • React-redux的原理以及使用
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Spark学习笔记之相关记录
  • 编写符合Python风格的对象
  • 给初学者:JavaScript 中数组操作注意点
  • 记录:CentOS7.2配置LNMP环境记录
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 漂亮刷新控件-iOS
  • 前端性能优化--懒加载和预加载
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 什么软件可以剪辑音乐?
  • 数据可视化之 Sankey 桑基图的实现
  • 微服务框架lagom
  • 微信开源mars源码分析1—上层samples分析
  • 小程序01:wepy框架整合iview webapp UI
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • # C++之functional库用法整理
  • # dbt source dbt source freshness命令详解
  • #pragma once与条件编译
  • #控制台大学课堂点名问题_课堂随机点名
  • $nextTick的使用场景介绍
  • (04)odoo视图操作
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (day6) 319. 灯泡开关
  • (编译到47%失败)to be deleted
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(六):替换字符串中匹配的子串
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .bat批处理(一):@echo off