redis专题-9.Spring使用jedis调试单机redis以及集群redis

一.单机版
   启动单台redis服务:   
     
     1.开启redis命令       redis-server /myredis/redis.conf (重定义的文件)
      2.使用redis-server客户端    redis-cli -p 6379     默认端口(6379)
           开启客户端     redis-cli 127.0.0.1:6379
                        ping   — > pong
       3.查看redis是否启动     
               进程查看   ps -ef|grep redis
               端口查看   lsof -i : 6379

二.我的案例  /Users/liuhang/eclipse/eclipse2/document/Spdb
     实现在UserController类中
Logger logger   = LoggerFactory.getLogger(UserServiceImpl. class );
private String REDIS_CONTENT_KEY = "redis_content_key" ;
public List<Employee> findEmployess(List<String> idList ) {
     //TODO 这个地方加缓存和不加缓存,单台或者集群的redis,都要进行压力测试  
     // 添加缓存
          // 查询数据库之前先查询缓存,如果有直接返回
     String s = idList .get(0);
  try {
  logger.debug("-------查询redis缓存");
     String json jedisClient .hget( REDIS_CONTENT_KEY , idList + "" );
     //Stringjson =  jedisClient.get(s);
     // 把json转换为list
     if (!StringUtils.isBlank( json )){
         //把json转换成List
          List<Employee> list = JSONUtils.toList( json ,Employee. class );
          return list ;  
      }
  } catch (Exception e ) {
e.printStackTrace();
    }
     logger.debug("----------执行查询");
     List<Employee> list = employeeDao .getEmployeesByKeys( idList );
     try {
     // 为了规范key可以使用hash,定义一个保存内容的key,hash中每个项就是cid,value是list,需要把list转换成json数据。
     jedisClient .hset( REDIS_CONTENT_KEY , idList + "" , JSONUtils.toJSONString( list ));
     //jedisClient.set(s, JSONUtils.toJSONString(list));
     } catch (Exception e ) {
          e .printStackTrace();
     }
     return list ;
}

三.注意事项
     1.要做好缓存同步,也就是在增加,修改,删除数据后,要同步缓存,把原有的del,在放入新的 这样就可以了`~
     2.企业会这么做,所有的缓存都有一个团队来管理,做一个定时器,每天凌晨固定一个时间点来跑批,把数据放入缓存
     3.取之前查询有没有缓存,有直接返回,没有查数据库,然后再放入缓存
为了使用RedisCluster并构建`org.springframework.data.redis.connection.jedis.JedisConnectionFactory`连接池,首先要添加Spring Data RedisRedisCluster的依赖到项目的Maven或Gradle配置中。然后可以按照以下步骤设置: 1. 配置SpringJedisConnectionFactory: ```java @Configuration public class JedisConfig { private static final String REDIS_HOSTS = "your_cluster_nodes"; // 替换成实际的Redis集群节点地址(例如:“localhost:6379-7”,每个节点间以逗号分隔) @Value("${spring.data.redis.cluster.protocol:${spring.datasource.redis.protocol}}") private String protocol; @Bean(name = "jedisConnectionConfig") public LettuceConnectionFactory jedisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostNameList(Arrays.asList(REDIS_HOSTS.split(","))); ClusterClientConfiguration cc = ClusterClientConfiguration.builder() .metadata(new SimpleNodeDescriptionSupport()) .compatibilityLevel(ClusterStatefulConfiguration.RedisCompatibilityLevel.CLUSTER_4_6_14) .build(); return newlettuceConnectionFactory(config, cc); } @Bean public RedisConnectionFactory lettuceConnectionFactory(StandaloneRedisServerConfiguration configuration, ClusterClientConfiguration cc) { if (protocol.equalsIgnoreCase("redis")) { return RedisConnectionFactory.newJedisPoolConfiguredLettuceConnectionFactory( configuration, cc); } else if (protocol.equalsIgnoreCase("lettuce")) { return LettuceConnectionFactory.builder() .commandScript美好生活(new CommandScriptFunction<>(RedisCommand.COMMAND)) // 可选的性能增强特性 .enableKeyspaceNotifications(true) // 监听频道/键通知(如Pub/Sub模式) .build(); } else { throw new IllegalStateException(String.format( "Unsupported protocol: '%s'. Expected either 'redis' or 'lettuce'", protocol)); } } // 使用JedisConnection定制类来包装Jedis实例 @Autowired JedisConnectionFactory factory; @Bean public org.springframework.data.redis.connection.jedis.JedisConnectionFactory jedisConnectionJdbcTemplate(JedisConnectionFactory factory) { JedisConnectionFactory customizedFactory = (JedisConnectionFactory) factory; JedisShardedClient jcsharddedClient = customizedFactory.getShardedConnection().getNativeConnection().unwrap(Redis ShardedClient.class); return new org.springframework.data.redis.connection.jedis.JedisConnectionFactory(jcsharddedClient); } } ``` 这里的代码创建了一个名为`lettuceConnectionJdbcTemplate`的 bean,它使用 `JedisShardedClient` 来包裹原始连接并实现了`Jedis`接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值