课程信息
- 学习课程: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中加入依赖下载。
- 新建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>
- 新建测试类
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的一些常见问题学习。
打卡截图
共同学习,写下你的评论
评论加载中...
作者其他优质文章