Redis——初识Redis

2023-10-26

Redis简介

Redis的数据结构致力于帮助用户解决问题,而不是像关系型数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化和客户端分片(client-side sharding)等特性,用户可以很方便的将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis不使用表,它的数据库也不会预定义或者强制要求用户对Redis存储的不同数据进行关联。Redis拥有两种不同形式的持久化方法,第一种是时间点存储,第二种是将所有修改了数据库的命令都写入一个只追加的文件里面。

Redis数据结构简介
Redis可以存储键与5种不同数据结构类型之间的映射,分别是:

  • String: 字符串
  • Hash: 散列
  • List: 列表
  • Set: 集合
  • Sorted Set: 有序集合

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

在Linux上的安装

解压安装包后,使用make,再创建bin目录,配置环境变量、配置conf(设置后台启动)
(略,请查阅相关资料)

/etc/redis.conf

redis.conf配置选项如下:

  • daemonize 是否以后台进程运行,默认为no
  • pidfile 如以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid
  • bind 绑定主机IP,默认值为127.0.0.1(注释)
  • port 监听端口,默认为6379
  • timeout 超时时间,默认为300(秒)
  • loglevel 日志记录等级,有4个可选值,debug,verbose(默认值),notice,warning
  • logfile 日志记录方式,默认值为stdout
  • databases 可用数据库数,默认值为16,默认数据库为0
  • save 指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。
    • save 900 1 900秒(15分钟)内至少有1个key被改变
    • save 300 10 300秒(5分钟)内至少有300个key被改变
    • save 60 10000 60秒内至少有10000个key被改变
  • rdbcompression 存储至本地数据库时是否压缩数据,默认为yes
  • dbfilename 本地数据库文件名,默认值为dump.rdb
  • dir 本地数据库存放路径,默认值为 ./
  • slaveof 当本机为从服务时,设置主服务的IP及端口(注释)
  • masterauth 当本机为从服务时,设置主服务的连接密码(注释)
  • requirepass 连接密码(注释)
  • maxclients 最大客户端连接数,默认不限制(注释)
  • maxmemory 设置最大内存,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。(注释)
  • appendonly 是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认值为no
  • appendfilename 更新日志文件名,默认值为appendonly.aof(注释)
  • appendfsync 更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次(默认值)。
  • vm-enabled 是否使用虚拟内存,默认值为no
  • vm-swap-file 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
  • vm- max-memory 只可以使用内存的最大值 如果超过了此值就使用虚拟内存了交换是使用次数少为主放在虚拟内存中去。默认值为0。

以下为后台启动:
在这里插入图片描述

使用Redis操作key-value数据

连接到Redis
Redis提供了四种连接工厂:
在这里插入图片描述
具体使用哪种,现在来说区别不大。从Spring Data Redis的角度来看,这些连接工厂在适用性上都是相同的。

  	@Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private int port;
    @Value("${redis.password}")
    private String password;
    
 	@Bean
    public JedisConnectionFactory jedisConnectionFactory(){
        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
        jedisConnectionFactory.setHostName(host);
        jedisConnectionFactory.setPort(port);
        jedisConnectionFactory.setPassword(password);

        return jedisConnectionFactory;
    }

使用RedisTemplate
Spring Data Redis以模版的形式提供了较高级的数据访问方案。实际上,它提供了两个模版:

  • RedisTemplate
  • StringRedisTemplate

RedisTemplate可以极大简化Redis的数据访问,持久化各种类型的key-value,而不仅仅是字节数组。但在认识到key-value通常是String类型的后,StringRedisTemplate又扩展了RedisTemplate,只关注String类型。

初始化bean,我们选择序列化器如下:

    @Bean
    public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(jedisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());

        return redisTemplate;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis——初识Redis 的相关文章

  • 【redis】Redis cluster是AP架构还是CP架构?

    最近刚好在看CAP理论 加上之前分析的redis cluster 就在想redis的cluster是什么模式的 AP还是CP 首先还是简单讲下CAP 具体的可见 CAP分别是 强一致性 Consistency 可用性 Availabilit
  • k8s-多节点部署efk-dial tcp 172.20.2.134:5601: getsockopt: connection refused

    异常信息 Error dial tcp 172 20 0 145 5601 getsockopt connection refused Trying to reach http 172 20 0 145 5601 分析 部署好efk后 通过
  • Azkaban的囚徒——Azkaban运行模式和流

    文章目录 Azkaban运行模式 Azkaban运行 Azkaban 流 Job Dependency Azkaban运行模式 在3 x版本里 提供了3种运行模式 the stand alone solo server mode stand
  • Distributed Database System —— Multi-raft协议介绍

    文章目录 Multi Raft协议 Multi Raft需要解决的问题 Multi Raft实现细节 Cockroach Multi Raft Raft Consistency of Range Replicas Range Leaders
  • Dubbo——Dubbo初识(1)

    背景 随着互联网的发展 网站应用的规模不断扩大 常规的垂直应用架构已无法应对 分布式服务架构以及流动计算架构势在必行 亟需一个治理系统确保架构有条不紊的演进 单一应用架构 当网站流量很小时 只需一个应用 将所有功能都部署在一起 以减少部署节
  • windows安装docker desktop

    windows安装docker desktop 前言 一 docker desktop 是什么 二 安装步骤 1 下载 2 安装 总结 前言 这里针对windows 10 家庭中文版 其他版本部分步骤可跳过 一 docker desktop
  • Hadoop是小象——YARN / Split&Block

    了解Hadoop架构 Hadoop可运行于一般的商用服务器上 具有高容错 高可靠性 高扩展性等特点 特别适合写一次 读多次的场景 其架构如下 HDFS 分布式文件存储 可靠性由心跳机制和冗余提供 YARN 分布式资源管理 MapReduce
  • Spark一路火花带闪电——Spark底层原理介绍

    文章目录 Spark计算引擎原理 1 1 术语 1 1 1 Application Spark应用程序 1 1 2 Driver 驱动程序 1 1 3 Cluster Manager 资源管理器 1 1 4 Executor 执行器 1 1
  • 基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想+多租户saas企业开发架构技术选型和设计方案

    基于Spring Cloud Alibaba 分布式微服务高并发数据平台化 中台 思想 多租户saas设计的企业开发架构 支持源码二次开发 支持其他业务系统集成 集中式应用权限管理 支持拓展其他任意子项目 架构源码可以加我WX haiwab
  • MQ相关问题

    ActiveMQ 功能完善 性能相对差 社区文档很久不更新了 丢失可能低 万级QBS 毫秒延迟 主从高可用 RabbitMQ 基于erlang 扩展性差 社区活跃 中小企业用 万级QBS 微妙延迟 主从高可用 RocketMQ 阿里开源 定
  • 数据库架构演变过程

    背景 在互联网初创时期 企业往往采用单体架构去搭建自己的应用系统 但是 随着企业的不断壮大 系统访问量不断随之上升 数据量也急剧增长 数据的存储是首先要解决的问题 在这个大数据时代 数据就是企业的命根子 数据库的单体架构很难满足数据的存储
  • 从分层架构到微服务架构(五)之服务化架构

    从分层架构到微服务架构 是一系列介绍 Fundamentals of Software Architecture 中提到的8种架构模式的文章 这里不会事无巨细地介绍所有的细节 而是会挑选其中关键内容 更多详情请阅读原书 往期精彩 从分层架构
  • Hadoop是小象——Hadoop集群安装配置

    文章目录 所需软件 集群网络配置 集群SSH免密登陆设置 Hadoop安装配置 所需软件 Linux所需软件包括 JavaTM1 5 x 必须安装 建议选择Sun公司发行的Java版本 以前安装过 ssh 必须安装并且保证 sshd一直运行
  • 几张架构图阐述微服务架构治理相关知识点

    微服务架构的技术点 超时时间设置 接口重试机制 流量QPS限流 请求熔断处理 请求降级处理 今天给大家分享一下以上相关的知识点 通过微服务系统之间RPC通信的方式 以架构图的形式给大家展开介绍 1 超时时间设置 应用访问业务系统A 业务系统
  • Zookeeper——zookeeper基础

    在深入了解ZooKeeper的运作之前 让我们来看看ZooKeeper的基本概念 我们将在本章中讨论以下主题 Architecture 架构 Hierarchical namespace 层次命名空间 Session 会话 Watches
  • Elasticsearch使用教程

    下载ES elasticsearch的下载地址 https www elastic co cn downloads elasticsearch ik分词器的下载地址 https github com medcl elasticsearch
  • docker 安装 mysql (windows版本)

    docker 安装 mysql windows版本 1 下载 MySQL 社区版映像 运行以下命令 docker pull mysql mysql server 5 7 2 启动Docker容器 请使用以下命令 docker run nam
  • Distributed System Transaction —— 2PL

    文章目录 2PL 并发控制常见的方式有2PL MVCC等方式 2PL 两阶段锁 two phase locking 是用来解决多线程之间的竞态条件的 其算法非常简单 数据库中的每一个数据对象都有两种锁 S hared lock 和 e X
  • 什么是分布式架构

    一 分布式架构定义 什么是分布式架构 分布式系统 distributed system 是建立在网络之上的软件系统 内聚性 是指每一个数据库分布节点高度自治 有本地的数据库管理系统 透明性 是指每一个数据库分布节点对用户的应用来说都是透明的
  • Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解 不知道大家有没有去看小编最后留下的问题 欢迎对文章进行评论也希望大家和小编多多交流 今天接着为大家带来Dubbo的内容 传输协议 上次调用机制中并没有涉及Dubbo传输的协议 这次容小

随机推荐

  • img.shape img.size

    import cv2 import numpy as np img cv2 imread messi5 jpg print img shape px img 100 100 print px blue img 100 100 0 print
  • WARNING: You are using pip version 19.2.3, however version 20.1.1 is available. -解决方法

    当用PIP下载模块时提示 WARNING You are using pip version 19 2 3 however version 20 1 1 is available You should consider upgrading
  • 寒假日报(2.3-2.5)

    1 终于学完了慕课中的 python3入门机器学习 简单总结回顾一下我学习到的东西 具体的学习笔记以后有时间就补上 Jupyter Notebook的使用 numpy基础 matpotlib绘图 KNN k近邻算法 分类 非监督学习 线性回
  • 实现基于TensorFlow的手写数字识别(1)

    一 MNIST数字识别数据集获取及处理 通过学习林大贵老师的 TensorFlow Keras深度学习人工智能实践应用 对图像处理的过程有了较浅薄的理解 在此与大家分享 同时由于上书中提供的代码下载页面失效 笔者按照书本中的内容手敲代码 如
  • 解决cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:356: erro

    Opencv python中调用cv2 imshow 时出现该错误 解决 图片路径有误 将第一幅图片中路径改为 Image ying3 jpg即可
  • jvm之String

    基本特性 字符串 使用一对 引起来表示 声明为final的 不可被继承 实现了Serializable接口 表示字符串是支持序列化的 实现了Comparable接口 表示String 可以比较大小 在jdk8及以前内部定义了final ch
  • 【封装】封装DML和DQL方法

    封装DML和DQL方法 一 工具类型的封装及普适性泛型工具 1 1 封装DML方法 1 2 封装DQL方法 二 用户案例 一 工具类型的封装及普适性泛型工具 1 1 封装DML方法 public int commonsUpdate Stri
  • H5活动页面遇到的坑+微信分享代码

    h5活动页面功能 在手机上微信分享 1 上传两张图片 2 播放一个背景音乐 很简单是么 那说明你知道的太少了 其实里面的坑好多 一下是制作的心路历程 坑1 iphone上传照片的时候 因为有oriten的原因 所以传上去旋转了 坑2 安卓a
  • Linux rpm命令查询软件包(-q、-qa、-i、-p、-l、-f、-R)

    使用 rpm 做查询命令的格式如下 root localhost rpm 选项 查询对象 rpm q 查询软件包是否安装 用 rpm 查询软件包是否安装的命令格式为 root localhost rpm q 包名 q 表示查询 是 quer
  • 【wpf,C#】wpf调用winform的chart空间,把数据显示成表格曲线

    背景 用wpf想把数据在显示在图表 以一条曲线展示的时候 发现出了问题 wpf不像winform 直接就有chart控件 所以就花了点精力 学会了怎么调用chart控件 最终是为了把数据能够以图表曲线的形式展示出来 当然 wpf还有其他显示
  • IO数据流

    IO流主要是分为字节流和字符流 他们最大的区别是操作的数据单元不同 字节流操作的数据单元占8位 字符流操作的数据单元占16位
  • 【STM32】 工程

    WRITE IN FRONT 介绍 謓泽 正在路上朝着 攻城狮 方向 前进四 荣誉 2021 2022年度博客之星物联网与嵌入式开发TOP5 TOP4 2021 2022博客之星TOP100 TOP63 阿里云专家博主 掘金优秀创作者 全网
  • 线段树板子

    include
  • TreeMap 排序

    一 TreeMap TreeMap 默认排序规则 按照key的字典顺序来排序 升序 当然 也可以自定义排序规则 要实现Comparator接口 用法简单 先看下下面的demo public class SortDemo public sta
  • Java课题笔记~Element UI

    Element 是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库 用于快速构建网页 Element 提供了很多组件 组成网页的部件 供我们使用 例如 超链接 按钮 图片 表格等等 如下图左边的是我们编写页面看到的按钮 上图右边的
  • Redis3.0 集群搭建

    redis3 0 部仅提供了哨兵监控 热切换 还提供了集群解决方案 接下来简单的搭建redis3 0集群 1 新建三个redis server实例 我们可以将redis conf分别copy到7001 7002 7003的文件夹中 并修改相
  • easyui-datagrid获取行和列数据

    1 获取当前行 var row dg datagrid getSelected 2 获取所有选中行 var rows dg datagrid getSelections 3 获取所有行 var rows dg datagrid getRow
  • 安卓11上的存储权限问题

    这篇文章 想来发布的有些晚了 安卓11已经发布多时了 关于安卓11上的存储权限变更的文章数不胜数 所以这篇文章只做为自己的一个简单的记录吧 在说11之前 我们先回忆以下10上存储权限的变更 每个应用会生成自己对应的沙盒文件路径 自己的应用只
  • 计算机基础相关知识面试题

    之前写过一篇面试题 但是在春招面试 笔试问了很多计算机网络 数据结构 操作系统等相关知识点记点之前总结的还是不够参考的 再来一篇 顺序有点乱 但是每一个都是参考的 已备大家复习使用吧 文章目录 UDP 传输控制协议 和TCP 用户数据报协议
  • Redis——初识Redis

    Redis简介 Redis的数据结构致力于帮助用户解决问题 而不是像关系型数据库那样 要求用户扭曲问题来适应数据库 除此之外 通过复制 持久化和客户端分片 client side sharding 等特性 用户可以很方便的将Redis扩展成