当前位置: 首页 > news >正文

阳泉市网站建设_网站建设公司_一站式建站_seo优化

标识标牌网站怎么做,网站建设預算,在线自助网站按照程序,网站的建设是什么各位小伙伴们大家好#xff0c;欢迎来到这个小扎扎的Redis 6专栏#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结#xff0c;鉴于 看到就是学到、学到就是赚到 精神#xff0c;这波依然是血赚 ┗|#xff40;O′|┛ #x1f4a1;Redis知识点速览#… 各位小伙伴们大家好欢迎来到这个小扎扎的Redis 6专栏在这个系列专栏中我对B站黑马的Redis教程进行一个总结鉴于 看到就是学到、学到就是赚到 精神这波依然是血赚 ┗|O′|┛ Redis知识点速览 Jedis的使用 Jedis快速入门 Jedis连接池 SpringBoot整合RedisTemplate 自定义配置RedisTemplate StringRedisTemplate 我们知道redis是一个很强大的NoSQL数据库从上面那一张图就可以看出来它分别拥有支持多种语言的客户端Java语言就是其中之一。上面的截图来源于官网https://redis.io/docs/clients/  点开Java可以看到官方推荐我们使用前三种Redisson、Jedis、Lettuce客户端那么他们分别有何优缺点我们又该如何选择呢 Redisson是一个基于Redis实现的分布式、可伸缩的Java数据结构集合。包含了诸如Map、Queue、Lock、 Semaphore、AtomicLong等强大功能Jedis以Redis命令作为方法名称学习成本低简单实用。但是Jedis实例是线程不安全的多线程环境下必须需要使用连接池来连接Lettuce是基于Netty实现的支持同步、异步和响应式编程方式并且是线程安全的。支持Redis的哨兵模式、集群模式和管道模式 基于目前的使用状况我们先学习Jedis的原生API然后再学习Spring整合Spring Data Redis框架该框架底层很好的兼容了Jedis和Lettuce Jedis的使用 Jedis快速入门 官网地址 https://github.com/redis/jedis 第一步 导依赖 !--jedis依赖-- dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion3.7.0/version /dependency!--单元测试依赖-- dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.7.0/version /dependency第二步 与redis建立连接在Java中的体现就是实例化一个Jedis对象构造器的参数需要虚拟机的ip地址可以使用如下命令查看 /*** 与Redis建立连接 BeforeEach表示每个方法执行之前都需要执行该方法* Param void* return*/ BeforeEach void setUp() {// 建立连接jedis new Jedis(你的虚拟机ip, 6379);// 设置redis的密码jedis.auth(你的redis密码);// 选择使用的库 默认是0号库jedis.select(0); }第三步 测试各种添加查询操作API的名和redis的命令一致其他操作参考redis的命令 /** * K-V的测试* Param void * return */ Test void testHash() {MapString, String map new HashMapString, String();map.put(id, 1);map.put(username, zhagnsan);map.put(age, 20);// 存入数据jedis.hset(user, map);// 获取命令SetString userKeys jedis.hkeys(user);ListString userValues jedis.hvals(user);// 输出获取的结果System.out.println(userKeys);System.out.println();System.out.println(userValues); }第四步 断开连接 /*** 关闭连接 AfterEach表示每个方法执行之后都需要执行该方法* Param void* return*/ AfterEach void tearDown() {if (jedis ! null) {jedis.close();} }redis.clients.jedis.exceptions.JedisConnectionException: Failed to create socket.如果报上面的错误连接不上的话可以参考这篇博客https://blog.csdn.net/qq_44624536/article/details/120213607如果还是无法解决的话很有可能就是虚拟机的防火墙没有关闭可以使用如下命令查看并关闭一下(我的就是这个错误原因) # 查看防火墙状态的命令 systemctl status firewalld # 关闭防火墙的命令 systemctl stop firewalld运行结果 Jedis连接池 上面说过Jedis本身是线程不安全的如果在多线程并发操作下极有可能出现线程安全问题因此在并发的环境下一定要为每一个线程创建一个独立的线程对象。但是频繁的创建销毁连接会导致性能损耗因此需要使用到Jedis连接池来代替Jedis的直接连接方式。 第一步 使用工具类创建并配置连接池对象并使用静态方法返回连接 public class JedisConnectionFactory {private static final JedisPool JEDIS_POOL;static {// 配置连接池JedisPoolConfig jedisPoolConfig new JedisPoolConfig();// 设置最大连接数、最大空闲连接、最小空闲连接、设置无连接的等待时间(毫秒为单位)jedisPoolConfig.setMaxTotal(8);jedisPoolConfig.setMaxIdle(8);jedisPoolConfig.setMinIdle(0);jedisPoolConfig.setMaxWaitMillis(1000);// 创建连接池对象JEDIS_POOL new JedisPool(jedisPoolConfig, 你的虚拟机ip, 6379, 1000, 你的redis密码);}public static Jedis getJedis() {return JEDIS_POOL.getResource();} }第二步 调用静态方法建立连接即可剩下的操作都一样 BeforeEach void setUp() {// 建立连接jedis JedisConnectionFactory.getJedis();// 选择使用的库 默认是0号库jedis.select(0); }SpringBoot整合RedisTemplate 自定义配置RedisTemplate 第一步 导入SpringBoot整合RedisTemplate的依赖连接池的依赖SpringBoot项目不用指定技术版本继承使用父工程中已经配置好的版本 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId /dependency第二步 配置信息 spring:redis:host: 你的虚拟机ipport: 6379password: 你的redis密码lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: 1000 第三步 直接注入redisTemplate对象使用它内部的API Autowired private RedisTemplate redisTemplate;Test void contextLoads() {redisTemplate.opsForValue().set(name, zhangsan);Object name redisTemplate.opsForValue().get(name);System.out.println(name name); }结果显示并没有问题可以正常的存入读出但是切换到redis中查看就有问题了没有name这个key但是有一个乱码的K-V生成这是什么原因呢?是因为redisTemplate底层将这个K-V当做对象进行了默认的jdk序列化操作jdk序列化差生的结果会有很多的问题结果可读性很差短字符串的话又会很占用内存空间于是我们可以选择使用其他的序列化方式使用配置类替代默认的序列化配置 Configuration public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory redisConnectionFactory) {// 创建RedisTemple对象RedisTemplateString, Object redisTemplate new RedisTemplate();// 设置连接工厂redisTemplate.setConnectionFactory(redisConnectionFactory);// 创建JSON序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer new GenericJackson2JsonRedisSerializer();// 设置K序列化redisTemplate.setKeySerializer(RedisSerializer.string());redisTemplate.setHashKeySerializer(RedisSerializer.string());// 设置V序列化redisTemplate.setValueSerializer(jsonRedisSerializer);redisTemplate.setHashValueSerializer(jsonRedisSerializer);// 返回RedisTemplate对象return redisTemplate;} }由于使用到了JSON所以需要导入相关依赖如果导入mvc的依赖的话会默认导入JSON但是我们的项目没有导MVC也没有JSON所以需要导一下 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactId /dependency按理来说value也可以是一个对象redisTemplate会将其序列化为JSON对象进行存储 Test void test01() {redisTemplate.opsForValue().set(user, new User(zhangsan, 20));Object name redisTemplate.opsForValue().get(name);System.out.println(user name); }StringRedisTemplate 由于上面使用配置类自定义序列化的方式导致序列化之后的字符串会带而且Jason对象序列化之后会带有类的全限定名数据量大了之后也会影响到存储的性能。于是出现了StringRedisTemplate这种模板很好的解决了上述问题但是需要我们手动的将对象进行序列化和反序列化 SpringBootTest public class StringRedistemplateTest {Autowiredprivate StringRedisTemplate stringRedisTemplate;Testvoid contextLoads() {stringRedisTemplate.opsForValue().set(name, lisi);Object name stringRedisTemplate.opsForValue().get(name);System.out.println(name name);}// 创建ObjectMapper对象用于序列化和反序列化private static final ObjectMapper MAPPER new ObjectMapper();Testvoid test01() throws JsonProcessingException {// 创建user对象 并序列化对象User user new User(zhangsan, 20);String userJson MAPPER.writeValueAsString(user);// 写数据stringRedisTemplate.opsForValue().set(user, userJson);// 读数据并反序列化输出String res stringRedisTemplate.opsForValue().get(user);User jsonUser MAPPER.readValue(res, User.class);System.out.println(user jsonUser);} }Test void testHash() {stringRedisTemplate.opsForHash().put(user01, name, lisi);stringRedisTemplate.opsForHash().put(user01, age, 21);MapObject, Object user01 stringRedisTemplate.opsForHash().entries(user01);System.out.println(user01); }
http://www.ihoyoo.com/news/127858.html

相关文章:

  • 网站开发 后端内蒙古企业网站建设
  • 陕西省城乡建设学校网站集团网站设计公司
  • dw做响应式网站怎么样建立个人网站
  • 网站 建站模式遵义建站平台哪家好
  • godday网站建设个体户门头图片
  • 展示型网站模板代码建行企业银行app下载
  • 安庆哪些做网站的公司好宁夏做网站公司
  • git网站开发网页设计叫什么行业
  • 怎样建设外贸网站济宁seo
  • 网站所有人查询国外h5分享网站
  • 有哪些装修网站青州做网站的网络公司
  • 怎样构建自己的网站江苏网站建设 博敏网站
  • 什么网站可以做投资服装设计专业有前途吗
  • 深圳公明网站制作名师工作室建设网站
  • 中英文网站asp怎么做济宁网站建设 优化培训
  • 数码产品商务网站建设wordpress视频曹鹏
  • 设计素材网站排行榜微信公众平台登录入口内村完小
  • 网站建设制作公热水工程技术支持 东莞网站建设
  • 西安网站建设中企建站个人网站界面设计图片
  • 我想做京东网站淘宝怎么做北京中国建设工程造价管理协会网站
  • 计算机网络技术网站开发与设计策划书word模板
  • 平板电脑可以做网站不淘宝搜索关键词查询工具
  • 京东网站的设计特点谢岗镇网站建设公司
  • 中环互联网网站建设套餐电子商务发展趋势有哪些
  • 通常做网站要多久深圳500强企业排行榜
  • 宝应网站建设网络服务商机构域名
  • 网站优化标题音乐网站设计怎么做
  • 律师网站建设与维护江西省建设厅官方网站
  • 北京迈程网络网站建设公司深圳物流公司哪家便宜又好
  • 外贸网站优化网站建设程序都有哪些