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

手机网站制作费wordpress ios版

手机网站制作费,wordpress ios版,微站网站,网站推广的特点使用 Spring Data Redis 实现 Redis 数据存储详解 Spring Data Redis 是 Spring 生态中操作 Redis 的核心模块,它封装了 Redis 客户端的底层细节(如 Jedis 或 Lettuce),提供了统一的 API 来操作 Redis 的数据结构。以下是详细实现…

使用 Spring Data Redis 实现 Redis 数据存储详解

Spring Data Redis 是 Spring 生态中操作 Redis 的核心模块,它封装了 Redis 客户端的底层细节(如 Jedis 或 Lettuce),提供了统一的 API 来操作 Redis 的数据结构。以下是详细实现步骤:


一、配置 Spring Data Redis

1. 引入依赖

pom.xml 中添加依赖(以 Spring Boot 3.x 为例):

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 使用 Lettuce 客户端(默认) -->
<dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId>
</dependency>
<!-- 可选:连接池(如使用 Jedis) -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>
2. 配置 Redis 连接

application.yml 中配置 Redis 服务器信息:

spring:redis:host: localhost      # Redis 服务器地址port: 6379          # 默认端口password: 123456    # 密码(若无则省略)database: 0         # 默认数据库索引lettuce:pool:max-active: 8   # 最大连接数max-idle: 4     # 最大空闲连接min-idle: 1     # 最小空闲连接
3. 配置 RedisTemplate

自定义 RedisTemplate 序列化方式(避免二进制乱码):

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);// Key 统一使用字符串序列化template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());// Value 统一使用 JSON 序列化Jackson2JsonRedisSerializer<Object> jsonSerializer = new Jackson2JsonRedisSerializer<>(Object.class);template.setValueSerializer(jsonSerializer);template.setHashValueSerializer(jsonSerializer);// 特殊数据结构的 Value 序列化(根据需求覆盖)// template.setDefaultSerializer(jsonSerializer); // 可选:全局默认序列化template.afterPropertiesSet();return template;}
}

二、操作 Redis 数据结构

在这里插入图片描述

1. String(字符串)
  • 用途:存储简单键值对(如缓存、计数器)。
  • 核心方法opsForValue()
@Autowired
private RedisTemplate<String, Object> redisTemplate;// 写入值
redisTemplate.opsForValue().set("user:1:name", "Alice");// 读取值
String name = (String) redisTemplate.opsForValue().get("user:1:name");// 原子递增
Long count = redisTemplate.opsForValue().increment("article:100:views");
2. Hash(哈希表)
  • 用途:存储对象字段(如用户信息)。
  • 核心方法opsForHash()
// 存储用户对象
Map<String, String> user = new HashMap<>();
user.put("name", "Bob");
user.put("age", "25");
redisTemplate.opsForHash().putAll("user:2", user);// 获取单个字段
String age = (String) redisTemplate.opsForHash().get("user:2", "age");// 更新字段
redisTemplate.opsForHash().put("user:2", "age", "26");// 获取所有字段
Map<Object, Object> userData = redisTemplate.opsForHash().entries("user:2");
3. List(列表)
  • 用途:实现队列、栈或消息列表。
  • 核心方法opsForList()
// 左侧插入元素
redisTemplate.opsForList().leftPush("task:queue", "task1");// 右侧弹出元素(阻塞式)
String task = (String) redisTemplate.opsForList().rightPop("task:queue", 10, TimeUnit.SECONDS);// 获取列表范围
List<Object> tasks = redisTemplate.opsForList().range("task:queue", 0, -1);
4. Set(集合)
  • 用途:存储唯一值(如标签、共同好友)。
  • 核心方法opsForSet()
// 添加元素
redisTemplate.opsForSet().add("article:100:tags", "tech", "java", "spring");// 判断元素是否存在
boolean exists = redisTemplate.opsForSet().isMember("article:100:tags", "java");// 求交集
Set<Object> commonTags = redisTemplate.opsForSet().intersect("article:100:tags", "article:101:tags");
5. Sorted Set(有序集合)
  • 用途:排行榜、优先级队列。
  • 核心方法opsForZSet()
// 添加元素及分数
redisTemplate.opsForZSet().add("leaderboard", "player1", 100.0);
redisTemplate.opsForZSet().add("leaderboard", "player2", 85.5);// 获取前 10 名
Set<ZSetOperations.TypedTuple<Object>> topPlayers = redisTemplate.opsForZSet().reverseRangeWithScores("leaderboard", 0, 9);// 更新分数
redisTemplate.opsForZSet().incrementScore("leaderboard", "player1", 20.0);
6. HyperLogLog
  • 用途:近似统计独立用户数(UV)。
  • 核心方法opsForHyperLogLog()
// 添加元素
redisTemplate.opsForHyperLogLog().add("uv:20231001", "user1", "user2", "user3");// 统计基数
Long uv = redisTemplate.opsForHyperLogLog().size("uv:20231001");
7. Bitmaps
  • 用途:位操作(如用户签到)。
  • 核心方法opsForValue().setBit()
// 设置第 5 位为 1(表示用户 ID=5 已签到)
redisTemplate.opsForValue().setBit("sign:user:202310", 5, true);// 统计总签到数
Long count = redisTemplate.execute((RedisCallback<Long>) conn -> conn.bitCount("sign:user:202310".getBytes())
);
8. GEO(地理空间)
  • 用途:附近位置查询。
  • 核心方法opsForGeo()
// 添加地理位置
redisTemplate.opsForGeo().add("cities", new Point(116.405285, 39.904989), "Beijing");// 查询距离
Distance distance = redisTemplate.opsForGeo().distance("cities", "Beijing", "Shanghai", Metrics.KILOMETERS);// 附近 100km 内的城市
GeoResults<GeoLocation<Object>> results = redisTemplate.opsForGeo().radius("cities", "Beijing", new Distance(100, Metrics.KILOMETERS));

三、高级功能

1. 事务支持
redisTemplate.execute(new SessionCallback<List<Object>>() {@Overridepublic List<Object> execute(RedisOperations operations) {operations.multi();  // 开启事务operations.opsForValue().set("key1", "value1");operations.opsForHash().put("hash1", "field", "value");return operations.exec();  // 提交事务}
});
2. 发布订阅
// 发布消息
redisTemplate.convertAndSend("news", "Breaking news: Spring 6 released!");// 订阅消息(需定义 MessageListener)
@Bean
public MessageListenerAdapter listenerAdapter(MessageReceiver receiver) {return new MessageListenerAdapter(receiver, "receiveMessage");
}@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory factory,MessageListenerAdapter listener) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(factory);container.addMessageListener(listener, new ChannelTopic("news"));return container;
}
3. 管道操作(批量执行)
List<Object> results = redisTemplate.executePipelined((RedisCallback<Object>) connection -> {connection.stringCommands().set("key1".getBytes(), "value1".getBytes());connection.stringCommands().set("key2".getBytes(), "value2".getBytes());return null;
});

四、测试与验证

1. 注入 RedisTemplate
@SpringBootTest
public class RedisTest {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Testvoid testString() {redisTemplate.opsForValue().set("testKey", "Hello Redis");assertEquals("Hello Redis", redisTemplate.opsForValue().get("testKey"));}
}
2. 检查 Redis 连接
@Autowired
private RedisConnectionFactory redisConnectionFactory;@Test
void testConnection() {RedisConnection conn = redisConnectionFactory.getConnection();assertTrue(conn.ping().equals("PONG"));conn.close();
}

五、注意事项

  1. 序列化一致性
    确保所有操作的 Key/Value 序列化方式一致,避免出现乱码或类型错误。

  2. 连接泄漏
    使用 @Transactional 或手动关闭连接,避免未释放的连接耗尽资源。

  3. 数据淘汰策略
    在 Redis 配置中设置 maxmemory-policy(如 allkeys-lru),防止内存溢出。

  4. 集群模式
    若使用 Redis 集群,需在配置中指定所有节点地址:

    spring:redis:cluster:nodes: host1:6379,host2:6379,host3:6379
    


文章转载自:

http://h3Hla6f5.qkxnw.cn
http://RlG9AGP4.qkxnw.cn
http://XH5rop32.qkxnw.cn
http://NAfxarob.qkxnw.cn
http://Ju4VhJTm.qkxnw.cn
http://Sl1iANTq.qkxnw.cn
http://ukgsEKME.qkxnw.cn
http://vHT9jzn6.qkxnw.cn
http://6kIRBsqI.qkxnw.cn
http://56pp7S55.qkxnw.cn
http://EnPCoRDC.qkxnw.cn
http://IOGKMKdo.qkxnw.cn
http://zCCe2CAo.qkxnw.cn
http://w9sCDxn4.qkxnw.cn
http://TU65dTaF.qkxnw.cn
http://P2obG0MC.qkxnw.cn
http://AldXLB7d.qkxnw.cn
http://n0LF8Lfd.qkxnw.cn
http://wAiVOiUO.qkxnw.cn
http://K3nzXkSz.qkxnw.cn
http://MKyffmMF.qkxnw.cn
http://YLKEfkQM.qkxnw.cn
http://odQ0xBzi.qkxnw.cn
http://iu2Ubb3l.qkxnw.cn
http://O2IzvlrX.qkxnw.cn
http://MLqhKY1N.qkxnw.cn
http://v0KgWrS7.qkxnw.cn
http://zjkLROR0.qkxnw.cn
http://apLbqQ0e.qkxnw.cn
http://V3WocAag.qkxnw.cn
http://www.dtcms.com/wzjs/729351.html

相关文章:

  • 如何布置网站阳江企业网站排名优化
  • iis7.5 发布网站wordpress 煎蛋网插件
  • 网站建设优化推广杭州拓者设计吧网站
  • 网站建设与实践心得体会全国十大电商排名
  • 网站做推广需要营业执照网站开发技术视频
  • 铁岭做网站网站建设所有软件清单
  • wordpress房屋网站模板自己开的网站 可以做代销吗
  • 做网站需要什么资金广州站八个字
  • 卡盟网站怎么做做机器学习比赛的网站
  • 提供网站建设定制整合营销传播经典案例
  • 自己做网站可以随便起名字吗wordpress 自媒体
  • 自贡建设投资有限公司网站做美食的网站可以放些小图片
  • 为什么无法登录建设银行网站网站模板文件怎么下载
  • 中医院网站源码海外求购信息网
  • 智能网站建设步骤小程序微信开发
  • 做电商的进货网站百货店怎么做网站送货
  • 遨游网站建设有限公司推广链接点击器app
  • 校园网站建设重要性广州燃气集团有限公司
  • 中国做机床的公司网站成全视频免费观看在线看第7季高清
  • 站长工具2023最新国产企业官网下载
  • 电子商务网站网络拓扑图网站右下角弹窗代码
  • 购物网站建设情况汇报网站开发框架的作用
  • 新手学易语言多久可以做网站东莞招标网官网
  • 网站建设所需素材郑州网站关键词优化
  • 网站后台模板 免费为企业做贡献的文章
  • 做网站一般都选哪家拥有自己的网站 如何做推广
  • 定制类网站seo怎么去优化
  • 做棋牌网站多少钱做购物比价的网站有哪些
  • 开发工程师网站开发工程师招聘广告设计素材库
  • 怎么给公司注册网站免费的外网连接器