为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第4天 Java中使用Redis

标签:
Redis

课程信息

  • 学习课程:Java工程师2022版
  • 章节名称:Redis入门-Java中使用Redis
  • 讲师:悟空

课程内容

配置Redis远程连接环境

  • 通过网络进行数据的保存和提取,在开发测试阶段,可以在redis配置文件中先关闭ip地址保护,两个修改位置protected mode no、bind 0.0.0.0
  • 在redis服务器上设置防火墙
    ./src/redis.server redis.conf
    netstat -tulpn | grep redis
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --reload

在redis官网,下载支持java的redis组件库Jedis,获取jar包可以在pom.xml中加入依赖下载。

  1. 新建maven工程,配置Jedis依赖
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.3.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.54</version>
</dependency>
  1. 新建测试类
Jedis jedis = new Jedis("192.168.132.44", 6379);
try{
    jedis.auth("123456");
    jedis.select(2);
    System.out.println("Redis连接成功");
    //字符串
    jedis.set("sn", "7781-9938");
    String sn = jedis.get("sn");
    System.out.println(sn);
    jedis.mset(new String[]{"title", "奶粉","num", "20"});
    List<String> goods = jedis.mget(new String[]{"sn","title","num"});
	System.out.println(goods);
    Long num = jedis.incr("num");
    System.out.println(num);
    //Hash
    jedis.hset("student:3312","name", "张晓明");
    String name =jedis.hget("student:3312", "name");
    System.out.println(name);
    Map<String,String> studentMap = new HashMap();
    studentMap.put("name", "张三");
    studentMap.put("age", "18");
    studentMap.put("id", "3313");
    jedis.hmset("student:3313",sudentMap);
    Map<String,String> smap = jedis.hgetAll("student:3313");
    System.out.println(smap);
    //List
    jedis.del("letter");
    jedis.rpush("letter", new String[]{"d", "e", "f"};
    jedis.lpush("letter", new String[]{"c", "b", "a"};
    List<String> letter = jedis.lrange("letter", 0, -1);
    jedis.lpop("letter");
    jedis.rpop("letter");
    letter = jedis.lrange("letter", 0, -1);
    System.out.println(letter);
}catch(Exception e){
    e.printStackTrace();
}finally{
    jedis.close();	
}

利用Jedis缓存数据

Connection refused : connect问题原因:Ip地址错误、端口错误、物理网络不通。

Jedis jedis = new Jedis("192.168.132.44", 6379);
try{
    List<Goods> goodsList = new ArrayList<>();
    goodsList.add(new Goods(8818, "红富士苹果", "", 3.5f);
    goodsList.add(new Goods(8819, "进口脐橙", "", 5f);
    goodsList.add(new Goods(8820, "进口香蕉", "", 25f);
    jedis.auth("123456");
    jedis.select(3);
    for(Goods goods: goosList) {
        String json = JSON.toJSONString(goods);
        System.out.println(json);
        String key = "goods" +goods.getGoodsId();
        jedis.set(key, json);
    }
}catch(Exceptoin e){
    e.printStackTrace();
}finally{
	jedis.close();
}

public static void main(String[] args){
	new CacheSampe();
    System.out.println("请输入要查询的商品编号:");
    String goodsId = new Scanner(System.in).next();
    Jedis jedis = new Jedis("192.168.132.44", 6379);
	try{
        jedis.auth("12345");
        jedis.select(3);
        String key = "goods" + goodsId;
        if(jedis.exists(key)){
            String json = jedis.get(key);
            System.out.println(json);
            Goods goods = JSON.parseObject(json, Goods.class);
            System.out.println(goods.getGoodsName());
            System.out.println(goods.getPrice());
        }
    }catch(Exception e) {
        e.printStackTrace();
    }finally{
        jedis.close();
    }
}

缓存数据的要求

1、数据不能太大

2、redis存储的信息要是稳定的,变更的频率较低。实际中使用redis优化程序存储速度。

4-9Redis入门常见问题

1、什么是Redis持久化策略?

Redis持久化策略,会把数据持久化道硬盘,当启动Redis后可以从磁盘将数据加载到内存中,然后在内存中读取数据,实现Redis持久化策略有两种方式:

1)RDB(数据快照模式),定期存储,保存的是数据本身,存储文件是紧凑的,当服务器启动时候,可以从RDB文件中恢复数据集。

2)AOF(追加模式),每次修改数据时,同步到硬盘(写草弱日志,保存的是数据的变更记录。在服务器重新启动的时候,会把所有的写操作重复执行一遍,从二实现数据备份。当写操作集过大(比原有的数据集还大),Redis会重写写操作集。

2、ZRANGE和ZRANGEBYSORCE的区别

1)ZRANGE的语法是ZRANGE key start stop [WITHSCORES],表示返回有序集key中指定区间内的成员。

2)ZRANGEBYSCORE的语法是ZRANGEBYSCORE key min max,表示返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。

3、jedis连接失败

1)可以尝试接触保护模式,打开redis.conf文件,然后将protected-mode yes改为no

2)如果还存在问题,可以使用stystemctl stop firewalld.service命令关闭防火墙一下。

4、MySQL和Redis的使用场景

1)Redis作为一个内存数据库,读取写入的速度是非常快的,所以经常被用来存储数据,页面等的缓存的内容。

2)MySQL如果每次提取都要读区MySQL存储在次盘的数据,比较慢,如:在需要读大量数据时(获取大量帖子和新闻),就可以使用Redis读区到数据。在内存中,Redis将MySQL中的数据获取到,然后直接从Redis读区数据,效率比较快。

3)综合所述,MySQL和Redis在处理大量读区数据操作时,一般是平和使用。MySQL是将数据放在磁盘中,Redis数据库是将数据放在内存,便于快速读取。

学习收获

通过本次学习了java中使用Redis,了解了Jedis连接Redis客户端,配置mavan依赖,使用new Jedis();然后通过auth方法连接,然后是Jedis操作各种类型,与直接在Redis中操作命令基本一致,然后对于Jedis缓存数据案列的学习,以及使用Redis缓存数据的情况,然后是Redis的一些常见问题学习。

打卡截图

图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消