第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含9679字,纯文字阅读大概需要14分钟。
内容图文
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040
第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第五天】
第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第六天】
第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)
第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)
课程计划:
1、内容管理功能添加缓存。
a) 使用redis做缓存工具
b) 实现系统高可用,redis需要做主备。使用redis做分片集群。Redis集群的搭建。
c) 向业务逻辑中添加缓存。
2.1 访问taotao-portal服务406问题
1、查看是否Jackson包是否存在。
2、如果后缀是html是不能响应json数据的。需要修改后缀名。
2.2 Post乱码问题
produces=MediaType.TEXT_PLAIN_VALUE+";charset=utf-8"
3 使用redis做缓存安装的步骤详情见点击跳转
Redis 是完全开源免费的,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
2.7.3 Jedis客户端
使用前先引入依赖坐标
版本可以选用2.10.2
<!-- Redis客户端 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency>
RedisDesktopManager的使用注意事项:
第一步:在redis的配置文件(redis.conf)里面是否设置了requirepass 表示连接的密码,如果没有设置,则连接不上。或者关闭保护模式。
第二步:在redis的配置文件里面,是要把bind 127.0.0.1 给注释掉。如果没有,连接不上,在第69行。
package com.taotao.rest.jedis; import java.util.HashSet; import org.junit.Test; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; import redis.clients.jedis.JedisPool; public class JedisTest { @Test public void testJedisSingle() { //创建一个jedis的对象 Jedis jedis = new Jedis("192.168.179.128",6379); jedis.auth("12345678"); //调用jedis对象的方法,方法名称和redis的命令一致 jedis.set("key1", "testJedisSingle"); String string = jedis.get("key1"); System.out.println(string); //关闭jedis jedis.close(); } /** * 使用连接池 */ @Test public void testJedisPool() { //创建jedis连接池 JedisPool pool = new JedisPool("192.168.179.128", 6379); //从连接池中获得Jedis对象 Jedis jedis = pool.getResource(); jedis.auth("12345678"); String string = jedis.get("key1"); System.out.println(string); //关闭jedis对象 jedis.close(); pool.close(); } //测试集群redis @Test public void testJedisCluster() throws Exception { HashSet<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort("192.168.179.128", 7001)); nodes.add(new HostAndPort("192.168.179.128", 7002)); nodes.add(new HostAndPort("192.168.179.128", 7003)); nodes.add(new HostAndPort("192.168.179.128", 7004)); nodes.add(new HostAndPort("192.168.179.128", 7005)); nodes.add(new HostAndPort("192.168.179.128", 7006)); JedisCluster cluster = new JedisCluster(nodes); cluster.set("key2", "kang"); String string = cluster.get("key2"); System.out.println(string); cluster.close(); } }View Code JedisTest
利用spring的IOC自动注入jedis的bean
application-jedis.xml
<!-- jedis客户端单机版 --> <bean id="redisClient" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> <bean id="jedisClient" class="com.taotao.rest.dao.impl.JedisClientSingle"/> <!-- jedis集群版配置 --> <!-- <bean id="redisClient" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="7005"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.179.128"></constructor-arg> <constructor-arg name="port" value="7006"></constructor-arg> </bean> </set> </constructor-arg> //可以省略不写使用默认的连接池配置 <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> --> <!-- <bean id="jedisClientCluster" class="com.taotao.rest.dao.impl.JedisClientCluster"/> --> <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="30" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="10" /> <!-- 每次释放连接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 释放连接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 连接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在获取连接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="true" /> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true" /> <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false" /> </bean>
测试类的test方法
@Test public void testSpringJedisCluster() throws IOException { //1.获取spring的IOC容器对象 ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "classpath:spring/applicationContext-*.xml"); //2.从IOC容器对象中取出bean的id为jedisCluster的那个 JedisCluster jedisCluster = (JedisCluster) applicationContext.getBean("redisClient"); jedisCluster.set("name", "kang"); String value = jedisCluster.get("name"); System.out.println(value); //console打印出kang就测试通过 /* 最后要关闭jedis客户端 */ jedisCluster.close(); }
/taotao-rest/src/main/java/com/taotao/rest/dao/JedisClient.java
package com.taotao.rest.dao; public interface JedisClient { String get(String key); String set(String key,String value); String hget(String hkey,String key); long hset(String hkey,String key, String value); long incr(String key); long expire(String key,int second); long ttl(String key); }View Code
/taotao-rest/src/main/java/com/taotao/rest/dao/impl/JedisClientSingle.java
package com.taotao.rest.dao.impl; import org.springframework.beans.factory.annotation.Autowired; import com.taotao.rest.dao.JedisClient; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; public class JedisClientSingle implements JedisClient { @Autowired private JedisPool jedisPool; @Override public String get(String key) { Jedis jedis = jedisPool.getResource(); String string = jedis.get(key); jedis.close(); return string; } @Override public String set(String key, String value) { Jedis jedis = jedisPool.getResource(); String string = jedis.set(key, value); jedis.close(); return string; } @Override public String hget(String hkey, String key) { Jedis jedis = jedisPool.getResource(); String string = jedis.hget(hkey, key); jedis.close(); return string; } @Override public long hset(String hkey, String key, String value) { Jedis jedis = jedisPool.getResource(); Long result = jedis.hset(hkey, key, value); jedis.close(); return result; } @Override public long incr(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.incr(key); jedis.close(); return result; } @Override public long expire(String key, int second) { Jedis jedis = jedisPool.getResource(); Long result = jedis.expire(key, second); jedis.close(); return result; } @Override public long ttl(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.ttl(key); jedis.close(); return result; } }View Code
/taotao-rest/src/main/java/com/taotao/rest/dao/impl/JedisClientCluster.java
package com.taotao.rest.dao.impl; import org.springframework.beans.factory.annotation.Autowired; import com.taotao.rest.dao.JedisClient; import redis.clients.jedis.JedisCluster; public class JedisClientCluster implements JedisClient { @Autowired private JedisCluster jedisCluster; @Override public String get(String key) { return jedisCluster.get(key); } @Override public String set(String key, String value) { return jedisCluster.set(key, value); } @Override public String hget(String hkey, String key) { return jedisCluster.hget(hkey, key); } @Override public long hset(String hkey, String key, String value) { return jedisCluster.hset(hkey, key, value); } @Override public long incr(String key) { return jedisCluster.incr(key); } @Override public long expire(String key, int second) { return jedisCluster.expire(key, second); } @Override public long ttl(String key) { return jedisCluster.ttl(key); } }View Code
? =======================================
参考资料:
redis学习笔记(二)JedisCluster + redis 3.2.5集群
redis-4.0.14.gem集群创建用到的脚本 下载地址
Redis免费客户端 Another Redis DeskTop Manager 下载地址
RedisDesktopManager连接不上redis的解决方法
redis.clients. NOAUTH Authentication required 解决办法
end
内容总结
以上是互联网集市为您收集整理的第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)全部内容,希望文章能够帮你解决第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第七天】(redis缓存)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。