Redis基础快速掌握
发布日期:2022-02-10 11:36:57 浏览次数:45 分类:技术文章

本文共 3496 字,大约阅读时间需要 11 分钟。

Redis下载与安装

具体下载安装文章来源:

Linux系统可能会遇到的问题没有wget命令(-bash: wget: 未找到命令)

解决:yum -y install wget

Nosql

  • NoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充
  • 作用:应对基于海量用户和海量数据前提下的数据处理问题
  • 特征:
    • 可扩容,可伸缩
    • 大数据量下高性能
    • 灵活的数据模型
    • 高可用
  • 常见 Nosql 数据库:
    • Redis
    • memcache
    • HBase
    • MongoDB

Redis

  • 概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库
  • 特征:
  1. 数据间没有必然的关联关系
  2. 内部采用单线程机制进行工作
  3. 高性能。官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。
  4. 多数据类型支持
    ◆ 字符串类型 string
    ◆ 列表类型 list
    ◆ 散列类型 hash
    ◆ 集合类型 set
    ◆ 有序集合类型 zset/sorted_set
  5. 支持持久化,可以进行数据灾难恢复
  • redis 数据存储格式

    • redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储
    • 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串
  • 应用场景

    • 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
    • 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
    • 时效性信息控制,如验证码控制、投票控制等
    • 分布式数据共享,如分布式集群架构中的 session 分离
    • 消息队列
  • redis为每个服务提供有16个数据库,编号从0到15

  • 每个数据库之间的数据相互独立

    • db 基本操作

      切换数据库: select index

      数据移动: move key db
      数据总量:dbsize
      数据清除(一般禁用这两个指令): flushdb.flushall

Redis的基本操作

  • 命令行模式工具使用

    • 帮助信息查阅

    help [command]

    例如:help set

    • 退出指令

    quit

    exit
    快捷键:Ctrl+C

    • 清除屏幕信息

    clear

Redis基本数据类型

string 字符串

在这里插入图片描述

  • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
  • 存储数据的格式:一个存储空间保存一个数据
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用
  • 应用场景:很常见的场景用于统计网站访问数量,当前在线人数等。incr命令(++操作)
hash

hash存储格式

在这里插入图片描述

  • 存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
  • 需要的存储结构:一个存储空间保存多个键值对数据
  • hash类型:底层使用哈希表结构实现数据存储
  • 应用场景:例如存储、读取、修改用户属性(name,age,pwd等),双11有上限数量商品的抢购

hash存储结构优化

  • 如果field数量较少,存储结构优化为类数组结构
  • 如果field数量较多,存储结构使用HashMap结构

hash基本操作

在这里插入图片描述

list

list存储格式

在这里插入图片描述

  • 存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
  • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
  • list类型:保存多个数据,底层使用双向链表存储结构实现
  • 应用场景:1.最新消息排行榜。2.消息队列,以完成多程序之间的消息交换。使用push操作将任务存放在list中,然后线程在用pop操作将任务取出进行执行。

list基本操作

在这里插入图片描述

set

set存储格式

在这里插入图片描述

  • 新的存储需求:存储大量的数据,在查询方面提供更高的效率
  • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
  • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
  • 应用场景: 排行榜
  • set 类型数据操作的注意事项

    set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份

    set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

set基本操作

在这里插入图片描述

HelloWorld(Jedis版)

Java语言连接redis服务

Jedis

SpringData Redis
Lettuce

客户端连接redis

public class JedisTest {
public static void main(String[] args) {
//1.获取连接对象// Jedis jedis = new Jedis("192.168.40.130",6379); Jedis jedis = JedisUtils.getJedis(); //2.执行操作 jedis.sadd("set1","abc","abc","def","poi","cba"); Long len = jedis.scard("set1"); System.out.println(len); //3.关闭连接 jedis.close(); }}

Redis持久化

RDB

将当前数据状态进行保存,快照形式,存储数据结果,存储格式简单,关注点在数据

  • RDB启动方式 —— save指令

    手动执行一次保存操作: save

    save指令的执行会阻塞当前Redis服务器,直到当前RDB过程完成为止,有可能会造成长时间阻塞

  • RDB启动方式 —— save指令相关配置

    在这里插入图片描述

  • RDB启动方式 —— bgsave指令

    bgsave:手动启动后台保存操作,但不是立即执行:

  • RDB启动方式 —— bgsave指令相关配置

    在这里插入图片描述
    bgsave命令是针对save阻塞问题做的优化

  • RDB启动方式 —— bgsave指令工作原理

    在这里插入图片描述

AOF

以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。与RDB相比可以简单理解为由记录数据改为记录数据产生的变化

  • AOF写数据过程
    在这里插入图片描述
启动AOF相关配置

在这里插入图片描述

AOF写数据三种策略(appendfsync)
  • always(每次):每次写入操作均同步到AOF文件中
    数据零误差,性能较低,不建议使用。
  • everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,在系统突然宕机的情况下丢失1秒内的数据
    数据准确性较高,性能较高,建议使用,也是默认配置
  • no(系统控制):由操作系统控制每次同步到AOF文件的周期整体过程不可控
AOF重写

随着命令不断写入AOF,文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制压缩文件体积。AOF文件重写是将Redis进程内的数据转化为写命令同步到新AOF文件的过程。就是将对同一个数据的若干个条命令执行结果转化成最终结果数据对应的指令进行记录。

AOF重写作用
  • 降低磁盘占用量,提高磁盘利用率
  • 提高持久化效率,降低持久化写时间,提高IO性能
  • 降低数据恢复用时,提高数据恢复效率
AOF重写规则
  • 进程内具有时效性的数据,并且数据已超时将不再写入文件
  • 非写入类的无效指令将被忽略,只保留最终数据的写入命令
    如del key1、 hdel key2、srem key3、set key4 111、set key4 222等 如select指令虽然不更改数据,但是更改了数据的存储位置,此类命令同样需要记录
  • 对同一数据的多条写命令合并为一条命令
    如lpush list1 a、lpush list1 b、 lpush list1 c 可以转化为:lpush list1 a b c。
    为防止数据量过大造成客户端缓冲区溢出,对list、set、hash、zset等类型,每条指令最多写入64个元素
AOF重写方式
  • 手动重写
    • bgrewriteaof
  • 自动重写触发条件设置
    • auto-aof-rewrite-min-size size
      auto-aof-rewrite-percentage percentage
    • aof_current_size
      aof_base_size
    • 自动重写触发条件
      在这里插入图片描述
AOF工作流程

在这里插入图片描述

AOF重写流程

在这里插入图片描述

在这里插入图片描述

转载地址:https://blog.csdn.net/drug1910951117/article/details/107121468 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:spring-boot笔记
下一篇:Spring整合MyBatis--快速入门

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月19日 01时15分11秒