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

帮朋友免费做网站网站建设乚金手指花总15

帮朋友免费做网站,网站建设乚金手指花总15,网站运营专员主要做什么,上海网站建设怎么弄Spring 整合 Redis 操作步骤总结 1. 添加依赖 首先#xff0c;在 pom.xml 文件中添加必要的 Maven 依赖。Redis 相关的依赖包括 Spring Boot 的 Redis 启动器和 fastjson#xff08;如果需要使用 Fastjson 作为序列化工具#xff09;#xff1a; !-- Spring Boot Re…Spring 整合 Redis 操作步骤总结 1. 添加依赖 首先在 pom.xml 文件中添加必要的 Maven 依赖。Redis 相关的依赖包括 Spring Boot 的 Redis 启动器和 fastjson如果需要使用 Fastjson 作为序列化工具 !-- Spring Boot Redis Starter -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency!-- Fastjson (用于 JSON 序列化和反序列化) -- dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactId /dependency2. 配置 Redis 连接信息 在 application.yml 或 application.properties 中配置 Redis 连接信息。以下是 application.yml 配置示例 spring:redis:host: 127.0.0.1port: 6379database: 0jedis:pool:max-active: 20max-wait: -1max-idle: 10min-idle: 0timeout: 20003. 配置 Redis 数据源连接池 如果使用连接池例如 HikariCP你可以在 application.yml 中配置数据源连接池的参数。Spring Boot 默认会使用 HikariCP 连接池。 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/easylive?serverTimezoneGMT%2B8useUnicodetruecharacterEncodingutf8autoReconnecttrueallowMultiQueriestrueuseSSLfalseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverhikari:pool-name: HikariCPDatasourceminimum-idle: 5idle-timeout: 180000maximum-pool-size: 10auto-commit: truemax-lifetime: 1800000connection-timeout: 30000connection-test-query: SELECT 14. 创建 Redis 配置类 在 Spring Boot 中配置 RedisTemplate 和 RedisMessageListenerContainer。以下是一个基本的 RedisConfig 类它用于配置 Redis 连接、序列化方式等。 Configuration public class RedisConfigV {private static final Logger logger LoggerFactory.getLogger(RedisConfig.class);// 配置 RedisTemplateBean(redisTemplate)public RedisTemplateString, V redisTemplate(RedisConnectionFactory factory) {RedisTemplateString, V template new RedisTemplate();template.setConnectionFactory(factory);// 设置 key 和 value 的序列化方式template.setKeySerializer(RedisSerializer.string());template.setValueSerializer(RedisSerializer.json());template.setHashKeySerializer(RedisSerializer.string());template.setHashValueSerializer(RedisSerializer.json());template.afterPropertiesSet();return template;}// 配置 Redis 消息监听容器Beanpublic RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {RedisMessageListenerContainer container new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);return container;} }5. 使用 RedisTemplate 执行 Redis 操作 RedisTemplate 是 Spring Data Redis 提供的核心工具用于执行 Redis 操作。以下是如何使用 RedisTemplate 进行 Redis 数据的基本操作。 Service public class RedisService {Autowiredprivate RedisTemplateString, Object redisTemplate;// 保存数据public void save(String key, Object value) {redisTemplate.opsForValue().set(key, value);}// 获取数据public Object get(String key) {return redisTemplate.opsForValue().get(key);}// 删除数据public void delete(String key) {redisTemplate.delete(key);}// 使用 Hash 存储数据public void saveHash(String hashKey, String key, Object value) {redisTemplate.opsForHash().put(hashKey, key, value);}public Object getHash(String hashKey, String key) {return redisTemplate.opsForHash().get(hashKey, key);} }6. Fastjson 作为序列化工具可选 如果你想使用 Fastjson 作为 Redis 数据的序列化和反序列化工具可以在 RedisConfig 中配置 Bean public RedisTemplateString, Object redisTemplate(RedisConnectionFactory factory) {RedisTemplateString, Object template new RedisTemplate();template.setConnectionFactory(factory);// 使用 Fastjson 序列化template.setValueSerializer(new FastJsonRedisSerializer(Object.class));template.setHashValueSerializer(new FastJsonRedisSerializer(Object.class));template.afterPropertiesSet();return template; }7. 配置 Redis 消息监听器可选 如果你需要实现 Redis 发布/订阅功能可以配置 RedisMessageListenerContainer 来监听 Redis 频道。 Service public class RedisListenerService {Autowiredprivate RedisMessageListenerContainer container;public void subscribe(String channel) {MessageListener listener message - {String messageBody new String(message.getBody());System.out.println(Received message: messageBody);};container.addMessageListener(listener, new ChannelTopic(channel));} }8. Redis 操作的示例 保存数据到 Redis redisService.save(username, john_doe);获取 Redis 中的数据 String username (String) redisService.get(username);删除 Redis 中的数据 redisService.delete(username);9. 总结 通过以上步骤你已经成功将 Redis 集成到 Spring Boot 项目中主要包括 配置 Redis 连接和连接池。配置 RedisTemplate 和使用序列化工具如 Fastjson。使用 RedisTemplate 执行常见的 Redis 操作如 set/get。配置 Redis 消息监听器实现发布/订阅功能可选。 此方案提供了高效的 Redis 集成方式可以支持缓存、消息队列、发布/订阅等常见使用场景。 封装工具类 package com.easylive.redis;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils;import javax.annotation.Resource; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors;Component(redisUtils) public class RedisUtilsV {Resourceprivate RedisTemplateString, V redisTemplate;private static final Logger logger LoggerFactory.getLogger(RedisUtils.class);/*** 删除缓存** param key 可以传一个值 或多个*/public void delete(String... key) {if (key ! null key.length 0) {if (key.length 1) {redisTemplate.delete(key[0]);} else {redisTemplate.delete((CollectionString) CollectionUtils.arrayToList(key));}}}public V get(String key) {return key null ? null : redisTemplate.opsForValue().get(key);}/*** 普通缓存放入** param key 键* param value 值* return true成功 false失败*/public boolean set(String key, V value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {logger.error(设置redisKey:{},value:{}失败, key, value);return false;}}public boolean keyExists(String key) {return redisTemplate.hasKey(key);}/*** 普通缓存放入并设置时间** param key 键* param value 值* param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期* return true成功 false 失败*/public boolean setex(String key, V value, long time) {try {if (time 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.MILLISECONDS);} else {set(key, value);}return true;} catch (Exception e) {logger.error(设置redisKey:{},value:{}失败, key, value);return false;}}public boolean expire(String key, long time) {try {if (time 0) {redisTemplate.expire(key, time, TimeUnit.MILLISECONDS);}return true;} catch (Exception e) {e.printStackTrace();return false;}}public ListV getQueueList(String key) {return redisTemplate.opsForList().range(key, 0, -1);}public boolean lpush(String key, V value, Long time) {try {redisTemplate.opsForList().leftPush(key, value);if (time ! null time 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}public long remove(String key, Object value) {try {Long remove redisTemplate.opsForList().remove(key, 1, value);return remove;} catch (Exception e) {e.printStackTrace();return 0;}}public boolean lpushAll(String key, ListV values, long time) {try {redisTemplate.opsForList().leftPushAll(key, values);if (time 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;}}public V rpop(String key) {try {return redisTemplate.opsForList().rightPop(key);} catch (Exception e) {e.printStackTrace();return null;}}public Long increment(String key) {Long count redisTemplate.opsForValue().increment(key, 1);return count;}public Long incrementex(String key, long milliseconds) {Long count redisTemplate.opsForValue().increment(key, 1);if (count 1) {//设置过期时间1天expire(key, milliseconds);}return count;}public Long decrement(String key) {Long count redisTemplate.opsForValue().increment(key, -1);if (count 0) {redisTemplate.delete(key);}logger.info(key:{},减少数量{}, key, count);return count;}public SetString getByKeyPrefix(String keyPrifix) {SetString keyList redisTemplate.keys(keyPrifix *);return keyList;}public MapString, V getBatch(String keyPrifix) {SetString keySet redisTemplate.keys(keyPrifix *);ListString keyList new ArrayList(keySet);ListV keyValueList redisTemplate.opsForValue().multiGet(keyList);MapString, V resultMap keyList.stream().collect(Collectors.toMap(key - key, value - keyValueList.get(keyList.indexOf(value))));return resultMap;}public void zaddCount(String key, V v) {redisTemplate.opsForZSet().incrementScore(key, v, 1);}public ListV getZSetList(String key, Integer count) {SetV topElements redisTemplate.opsForZSet().reverseRange(key, 0, count);ListV list new ArrayList(topElements);return list;}} 这个 RedisUtils 类是一个通用的 Redis 工具类封装了对 Redis 的常见操作方便在项目中进行缓存处理、队列操作等。下面详细解释每个方法的功能。 1. delete 方法 public void delete(String... key) {if (key ! null key.length 0) {if (key.length 1) {redisTemplate.delete(key[0]);} else {redisTemplate.delete((CollectionString) CollectionUtils.arrayToList(key));}} }功能删除指定的 Redis 键可以一次删除一个或多个键。参数key一个或多个 Redis 键名。实现 如果只有一个键调用 redisTemplate.delete(key[0]) 删除该键。如果有多个键先将它们转换成一个 List然后调用 redisTemplate.delete() 删除多个键。 2. get 方法 public V get(String key) {return key null ? null : redisTemplate.opsForValue().get(key); }功能从 Redis 中获取指定键的值。参数keyRedis 键名。返回键对应的值如果键为空则返回 null。实现调用 redisTemplate.opsForValue().get(key) 获取 Redis 中保存的值。 3. set 方法 public boolean set(String key, V value) {try {redisTemplate.opsForValue().set(key, value);return true;} catch (Exception e) {logger.error(设置redisKey:{},value:{}失败, key, value);return false;} }功能将数据保存到 Redis 中使用键值对存储。参数keyRedis 键名value要保存的值。返回如果成功保存返回 true否则返回 false。实现调用 redisTemplate.opsForValue().set(key, value) 保存数据如果发生异常则返回 false 并记录日志。 4. keyExists 方法 public boolean keyExists(String key) {return redisTemplate.hasKey(key); }功能检查 Redis 中是否存在指定的键。参数keyRedis 键名。返回如果键存在返回 true否则返回 false。实现调用 redisTemplate.hasKey(key) 检查键是否存在。 5. setex 方法 public boolean setex(String key, V value, long time) {try {if (time 0) {redisTemplate.opsForValue().set(key, value, time, TimeUnit.MILLISECONDS);} else {set(key, value);}return true;} catch (Exception e) {logger.error(设置redisKey:{},value:{}失败, key, value);return false;} }功能将数据保存到 Redis 中并设置过期时间。参数keyRedis 键名value要保存的值time过期时间单位为毫秒。返回保存成功返回 true否则返回 false。实现 如果 time 0调用 redisTemplate.opsForValue().set(key, value, time, TimeUnit.MILLISECONDS) 保存数据并设置过期时间。如果 time 0直接调用 set() 方法保存数据。 6. expire 方法 public boolean expire(String key, long time) {try {if (time 0) {redisTemplate.expire(key, time, TimeUnit.MILLISECONDS);}return true;} catch (Exception e) {e.printStackTrace();return false;} }功能设置 Redis 键的过期时间。参数keyRedis 键名time过期时间单位为毫秒。返回设置成功返回 true否则返回 false。实现调用 redisTemplate.expire(key, time, TimeUnit.MILLISECONDS) 设置过期时间。 7. getQueueList 方法 public ListV getQueueList(String key) {return redisTemplate.opsForList().range(key, 0, -1); }功能获取 Redis 列表队列的所有元素。参数keyRedis 键名。返回Redis 列表的所有元素返回类型是 ListV。实现调用 redisTemplate.opsForList().range(key, 0, -1) 获取整个列表。 8. lpush 方法 public boolean lpush(String key, V value, Long time) {try {redisTemplate.opsForList().leftPush(key, value);if (time ! null time 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;} }功能将元素插入到 Redis 列表的头部。参数keyRedis 键名value要插入的值time可选的过期时间单位为秒。返回插入成功返回 true否则返回 false。实现 调用 redisTemplate.opsForList().leftPush(key, value) 将元素添加到列表头部。如果 time 0则调用 expire() 方法设置过期时间。 9. remove 方法 public long remove(String key, Object value) {try {Long remove redisTemplate.opsForList().remove(key, 1, value);return remove;} catch (Exception e) {e.printStackTrace();return 0;} }功能从 Redis 列表中删除指定元素。参数keyRedis 键名value要删除的值。返回删除成功返回被删除的元素数量失败返回 0。实现调用 redisTemplate.opsForList().remove(key, 1, value) 删除元素。 10. lpushAll 方法 public boolean lpushAll(String key, ListV values, long time) {try {redisTemplate.opsForList().leftPushAll(key, values);if (time 0) {expire(key, time);}return true;} catch (Exception e) {e.printStackTrace();return false;} }功能将多个元素插入到 Redis 列表的头部。参数keyRedis 键名values要插入的值列表time可选的过期时间单位为秒。返回插入成功返回 true否则返回 false。实现 调用 redisTemplate.opsForList().leftPushAll(key, values) 将多个元素插入到列表头部。如果 time 0则调用 expire() 方法设置过期时间。 11. rpop 方法 public V rpop(String key) {try {return redisTemplate.opsForList().rightPop(key);} catch (Exception e) {e.printStackTrace();return null;} }功能从 Redis 列表的尾部弹出一个元素。参数keyRedis 键名。返回弹出的元素如果发生异常则返回 null。实现调用 redisTemplate.opsForList().rightPop(key) 弹出列表尾部元素。 12. increment 方法 public Long increment(String key) {Long count redisTemplate.opsForValue().increment(key, 1);return count; }功能将指定键的值增加 1如果键不存在则创建并设置为 1。参数keyRedis 键名。返回增加后的值。实现调用 redisTemplate.opsForValue().increment(key, 1) 增加值。 13. incrementex 方法 public Long incrementex(String key, long milliseconds) {Long count redisTemplate.opsForValue().increment(key, 1);if (count 1) {expire(key, milliseconds);}return count; }功能将指定键的值增加 1并在首次设置时设置过期时间。参数keyRedis 键名milliseconds
http://www.w-s-a.com/news/422047/

相关文章:

  • 网站建设的工作总结seo同行网站
  • 网站需要兼容哪些浏览器sql数据库做的网站怎么发布
  • 营销型网站的建站步骤是什么意思广州门户网站建设公司
  • 汕尾好网站建设推广计算机软件包含网站开发
  • 建设工程施工许可证在哪个网站办wordpress更换主题白屏
  • 微交易网站建设wordpress摘要调用
  • 做网站维护需要懂什么网站后台后缀名
  • 网站建设的认可桂平市住房和城乡建设局网站
  • 网站设计师岗位职责域名关键词查询
  • 百度怎样建设网站盐城公司网站建设
  • 站长工具国产2023网站制作 商务
  • 网络新闻专题做的最好的网站杭州网站设计建设公司
  • 电商网站界面设计流程ps培训班一般学费多少钱
  • 西安网站运营上海闵行区网站制作公司
  • 宁波网站推广代运营长链接转化成短链接工具
  • 小企业如何建网站怎么自己制作app
  • 苏州品牌网站制作公司宁波建设工程有限公司
  • 合肥网站建设zgkr互联网创业好项目
  • 哪里学网站建设与管理云落wordpress
  • 网站建设意见做网站涉及到哪些
  • 网站导航栏原型图怎么做怎么样创建一个网站
  • 遨游建站金融网站建站
  • cms企业网站模板上海网站开发平台
  • 贵阳网站建设搜q479185700网站团队建设
  • 电商网站建设 教学总结蚌埠市住房建设部网站
  • 深圳罗湖企业网站发稿类别是什么
  • 做网站基本语言企业应用软件开发
  • 网站建设与运营 市场分析影视小程序搭建
  • vs 团队网站开发中铁建设门户网登录咋进不去了
  • 快速网站建设公司哪家好优秀的网站建设