春眠不觉晓,redis知多少(2)

2023-10-29

在这里插入图片描述

本文是本人在学习redis基础时的一些总结,第一篇在春眠不觉晓,redis知多少

4. 持久化

4.1 原因

redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。

4.2 redis持久化机制

4.2.1 RDB

默认方式,不需要进行配置,默认就使用这种机制 在一定的间隔时间中,检测key的变化情况,然后持久化数据

  1. 编辑redis.windwos.conf文件
    在这里插入图片描述
    用记事本打开后,找到并添加:
#   after 900 sec (15 min) if at least 1 key changed
     save 900 1
     #   after 300 sec (5 min) if at least 10 keys changed
     save 300 10
     #   after 60 sec if at least 10000 keys changed
     save 60 10000
  1. 重新启动redis服务器,并指定配置文件名称
    我的在这里你可以到你下载目录具体配置:
D:\JavaWeb2018\day23_redis\资料\redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf 

4.2.2 AOF

日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据

  1. 编辑redis.windwos.conf文件
appendonly no(关闭aof) --> appendonly yes (开启aof)

细节的具体介绍:

# appendfsync always : 每一次操作都进行持久化
  appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no  : 不进行持久化

5. JAVA客户端 Jedis

5.1 介绍

= 一款java操作redis数据库的工具.

5.2 使用步骤

  1. 下载jedis的jar包
  2. 使用
          //1. 获取连接
          Jedis jedis = new Jedis("localhost",6379);
          //2. 操作
          jedis.set("username","zhangsan");
          //3. 关闭连接
          jedis.close();

5.3 Jedis操作各种redis的数据结构

1) 字符串类型 string
set
get

 //1. 获取连接
          Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
          //2. 操作
          //存储
          jedis.set("username","zhangsan");
          //获取
          String username = jedis.get("username");
          System.out.println(username);
  
          //可以使用setex()方法存储可以指定过期时间的 key value
          jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
  
          //3. 关闭连接
          jedis.close();

2) 哈希类型 hash : map格式
hset
hget
hgetAll

 //1. 获取连接
          Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
          //2. 操作
          // 存储hash
          jedis.hset("user","name","lisi");
          jedis.hset("user","age","23");
          jedis.hset("user","gender","female");
  
          // 获取hash
          String name = jedis.hget("user", "name");
          System.out.println(name);
  
  
          // 获取hash的所有map中的数据
          Map<String, String> user = jedis.hgetAll("user");
  
          // keyset
          Set<String> keySet = user.keySet();
          for (String key : keySet) {
              //获取value
              String value = user.get(key);
              System.out.println(key + ":" + value);
          }
  
          //3. 关闭连接
          jedis.close();

3) 列表类型 list : linkedlist格式。支持重复元素
lpush / rpush
lpop / rpop
lrange start end : 范围获取

//1. 获取连接
          Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
          //2. 操作
          // list 存储
          jedis.lpush("mylist","a","b","c");//从左边存
          jedis.rpush("mylist","a","b","c");//从右边存
  
          // list 范围获取
          List<String> mylist = jedis.lrange("mylist", 0, -1);
          System.out.println(mylist);
          
          // list 弹出
          String element1 = jedis.lpop("mylist");//c
          System.out.println(element1);
  
          String element2 = jedis.rpop("mylist");//c
          System.out.println(element2);
  
          // list 范围获取
          List<String> mylist2 = jedis.lrange("mylist", 0, -1);
          System.out.println(mylist2);
  
          //3. 关闭连接
          jedis.close();

4) 集合类型 set : 不允许重复元素
sadd
smembers:获取所有元素


    //1. 获取连接
          Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
          //2. 操作
  
  
          // set 存储
          jedis.sadd("myset","java","php","c++");
  
          // set 获取
          Set<String> myset = jedis.smembers("myset");
          System.out.println(myset);
  
          //3. 关闭连接
          jedis.close();

5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
zadd
zrange

//1. 获取连接
          Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
          //2. 操作
          // sortedset 存储
          jedis.zadd("mysortedset",3,"亚瑟");
          jedis.zadd("mysortedset",30,"后裔");
          jedis.zadd("mysortedset",55,"孙悟空");
  
          // sortedset 获取
          Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
  
          System.out.println(mysortedset);
  
  
          //3. 关闭连接
          jedis.close();

5.4 Jedis连接池: JedisPool

5.4.1 使用

  1. 创建JedisPool连接池对象
  2. 调用方法 getResource()方法获取Jedis连接
 //0.创建一个配置对象
           JedisPoolConfig config = new JedisPoolConfig();
           config.setMaxTotal(50);
           config.setMaxIdle(10);
   
           //1.创建Jedis连接池对象
           JedisPool jedisPool = new JedisPool(config,"localhost",6379);
   
           //2.获取连接
           Jedis jedis = jedisPool.getResource();
           //3. 使用
           jedis.set("hehe","heihei");
   
   
           //4. 关闭 归还到连接池中
           jedis.close();
   

5.4.2 连接池工具类

public class JedisPoolUtils {
    private static JedisPool jedisPool;
     static{
            //读取配置文件
            InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
            //创建Properties对象
            Properties pro = new Properties();
             //关联文件
            try {
                pro.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
            //获取数据,设置到JedisPoolConfig中
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
            config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
             //初始化JedisPool
            jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
            }
             /**
         * 获取连接方法
         */
        public static Jedis getJedis(){
            return jedisPool.getResource();
        }
    }

over!!!
长路漫漫,JAVA为伴!!!

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

春眠不觉晓,redis知多少(2) 的相关文章

  • Redis键空间事件不触发

    我有两个 Redis 客户端 在一个文件中我有一个简单的脚本设置并删除了 Redis 键 var redis require redis var client redis createClient 6379 127 0 0 1 client
  • 是否有可嵌入的 Java 替代 Redis?

    根据这个线程 https stackoverflow com questions 3047010 best redis library for java 如果我想从Java中使用Redis Jedis是最好的选择 然而 我想知道是否有任何库
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • Spring Data Redis - Lettuce连接池设置

    尝试在 spring data redis 环境中设置 Lettuce 连接池 下面是代码 Bean LettuceConnectionFactory redisConnectionFactory GenericObjectPoolConf
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • 如何测试我的 Redis 缓存是否正常工作?

    我已经安装了 django redis cache 和 redis py 我遵循了 Django 的缓存文档 据我所知 以下设置就是我所需要的 但我如何判断它是否正常工作 设置 py CACHES default BACKEND redis
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • 使用 Redis 命令 incr 和 expire 时的竞争条件

    根据redis文档 http redis io commands incr http redis io commands incr 在段落模式 速率限制器 2 较短的版本代码 value INCR ip IF value 1 THEN EX
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • 为什么 Redis TimeSeries 不捕获聚合中的最后一个元素?

    我试图了解 Redis 的时间序列规则创建的工作原理 但我很困惑为什么 Redis 会忽略聚合中的最后一项 并想知道这是否是预期的行为 我在中创建了示例代码redis cli为了显示 127 0 0 1 6379 gt FLUSHALL O
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • StackExchange.Redis Get 函数抛出 TimeoutException

    我在用着StackExchange Redis与 C 和StackExchangeRedisCacheClient Get函数抛出以下异常 myCacheClient Database StringGet txtKey Text myCac
  • redis 2.8.7 Linux Sentinel环境配置问题,如何使其自启动,应该订阅什么?

    现在我们尝试使用 redis 2 8 7 作为缓存存储 来自使用 booksleeve 客户端的 NET Web 应用程序 目前看来这是一个非常有趣和令人兴奋的任务 redis 文档非常好 但由于缺乏真正的实践经验 我确实有几个关于如何正确
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • 如何延长 django-redis 中的缓存 ttl(生存时间)?

    我正在使用 django 1 5 4 和 django redis 3 7 1 我想延长缓存的 ttl 生存时间 当我取回它时 这是示例代码 from django core cache import cache foo cache get
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • 使用环境变量在 redis.conf 中设置动态路径

    我有一个环境变量MY HOME其中有一个目录的路径 home abc 现在 我有一个redis conf文件 我需要像这样设置这个路径 redis conf pidfile MY HOME local var pids redis pid

随机推荐

  • 【nvidia】1.命令行方式安装nvidia显卡驱动

    文章目录 方法一 第一步 查询合适的显卡驱动 第二步 安装驱动 第三步 重启电脑并验证安装 方法二 第一步 安装显卡驱动PPA 第二步 查找合适的显卡驱动 第三步 移除系统上先前安装的显卡驱动 第四步 安装显卡驱动 第五步 重启电脑并验证安
  • 334:递增的三元子序列-中等

    题目描述 给定一个未排序的数组 判断这个数组中是否存在长度为 3 的递增子序列 数学表达式如下 如果存在这样的 i j k 且满足 0 i lt j lt k n 1 使得 arr i lt arr j lt arr k 返回 true 否
  • 长虹电视新机测试什么软件,2021长虹电视安装第三方app最新方法!长虹电视解除第三方限制...

    警告 最后再次提醒各位 刷机有风险 用户需谨慎 变成昂贵的大黑板了那可不好玩了 除非电视有问题需要刷机 否则不推荐各位进行刷机操作 正文 在一些新机器新版本固件当中 长虹为了缩短开机启动过程的时间 启用了新的刷机策略 和之前的都不一样了 这
  • 编程计算饥荒所有农作物搭配(JavaScript版)

    导语 通过编程计算饥荒游戏中 所有农作物可满足肥度自给自足的种植搭配 思路 穷举出所有农作物 包括生长季节 生长素 堆肥 肥料消耗数值等属性 后续如果版本更新或有MOD农作物需添加 在此处修改添加 const ALL CROPS name
  • 因果推断—现代统计的思想飞跃:过去、现在到未来(伯克利丁鹏博士万字长文)...

    来源 专知 本文约12400字 建议阅读10 分钟 本文将回顾统计因果推断的历史背景 评述中国因果推断研究的现状 并且大胆推测它未来的发展前景 转载自 数学文化 2021 第 12 卷第 2 期 已获得原刊和作者授权 引言 探求事物的原因
  • 华为OD机试 - 猜数字(Java)

    题目描述 一个人设定一组四码的数字作为谜底 另一方猜 每猜一个数 出数者就要根据这个数字给出提示 提示以XAYB形式呈现 直到猜中位置 其中X表示位置正确的数的个数 数字正确且位置正确 而Y表示数字正确而位置不对的数的个数 例如 当谜底为8
  • 全栈之前端

    欢迎关注 全栈工程师修炼指南 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 花开堪折直须折 莫待无花空折枝 作者主页 https www weiyigeek top 博客 https b
  • C# .Net中的类型转换(转载)

    转载自 http www ynws gov cn wsrs blog blogview asp logID 99 导读 本文是对 C 的类型转换的讲解 其内容涉及 C 的装箱 拆箱 别名 数值类型间相互转换 字符的 ASCII 码和 Uni
  • unity热更新框架Xlua--配置环境变量与直接执行字符串

    本博客根据51CTOscholl刘国柱老师网课编写 小白笔记 侵权必删 Xlua下载链接 https pan baidu com s 1YiCuojsE3uzZF7rLuIKYtw 提取码 t4xe 配置环境 将上面链接的压缩包解压 并将其
  • elementui 之el-table通过v-if 控制按钮显示与隐藏

    前端效果演示 后端代码
  • Git管理神器SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)...

    前言 俗话说的好工欲善其事必先利其器 Git分布式版本控制系统是我们日常开发中不可或缺的 目前市面上比较流行的Git可视化管理工具有SourceTree Github Desktop TortoiseGit 综合网上的一些文章分析和自己的日
  • Java 并发 ThreadLocal 详解

    文章首发于个人博客 欢迎访问关注 https www lin2j tech 简介 ThreadLocal 即线程本地变量的意思 常被用来处理线程安全问题 ThreadLocal 的作用是为多线程中的每一个线程都创建一个线程自身才能用的实例对
  • 凯利公式自动计算表_利用凯利公式计算每场投注的最佳比例

    即便是胜率 99 的赌局 如果每局全押 那么也注定会血本无归 即便是胜率只有 1 如果 1000 元钱本金每局仅投注 1 元 哪怕每次必输 也要 1000 次才会破产 成功的投资不仅要对投资策略的胜率具有一定程度的认识 同时要认真分析每一次
  • Java中终止线程的3种方法,你是否了解?

    一 stop 方法终止线程 线程不安全 不推荐 直接使用thread stop 来强行终止线程 线程会立即终止执行 可能会产生不可预料的结果 在调用thread stop 后会导致该线程所持有的所有锁突然释放 不可控制 那么被保护数据就有可
  • kafka3.1.0 java 测试demo

    前置条件 首先已经安装的Java环境 并且安装了zookeeper服务注册中心 下载 https kafka apache org 当前最新版本3 1 0 安装 在windows解压后主要关注的是config文件下的server prope
  • 第十一届蓝桥杯C/C++寻找2020

    第十一届蓝桥杯C C 寻找2020 对我来说一开始主要是不会把文本的内容复制去数组里面 后来找了同学帮忙才解决的 直接上代码 结果是16520 include
  • python输入三门课程成绩_python脚本如何输入成绩求平均分?

    python脚本如何输入成绩求平均分 python脚本输入成绩求平均分的方法 脚本要实现功能 1 输入学生学号 2 依次输入学生的三门科目成绩 3 计算该学生的平均成绩 并打印 4 平均成绩保留两位小数点 计算该学生语文成绩占总成绩的百分比
  • 《消息队列高手课》该如何选择消息队列

    作为一个程序员 相信你一定听过 没有银弹 这个说法 这里面的银弹是指能轻松杀死狼人 用白银做的子弹 什么意思呢 我对这句话的理解是说 在软件工程中 不存在像 银弹 这样可以解决一切问题的设计 架构或软件 每一个软件系统 它都是独一无二的 你
  • SpringMVC的文件上传

    SpringMVC的文件上传 SpringMVC的文件上传 1 SpringMVC的请求 文件上传 客户端表单实现 2 SpringMVC的请求 文件上传 文件上传的原理 3 SpringMVC的请求 文件上传 单文件上传的代码实现1 4
  • 春眠不觉晓,redis知多少(2)

    春眠不觉晓 redis知多少 第二篇 4 持久化 4 1 原因 4 2 redis持久化机制 4 2 1 RDB 4 2 2 AOF 5 JAVA客户端 Jedis 5 1 介绍 5 2 使用步骤 5 3 Jedis操作各种redis的数据