当前位置: 首页> 文旅> 酒店 > 已备案域名购买网址低价_北京网站建设咨询公司_金华网站推广_seo裤子的关键词首页排名有哪些

已备案域名购买网址低价_北京网站建设咨询公司_金华网站推广_seo裤子的关键词首页排名有哪些

时间:2025/7/10 0:36:51来源:https://blog.csdn.net/weixin_51635918/article/details/145689333 浏览次数:0次
已备案域名购买网址低价_北京网站建设咨询公司_金华网站推广_seo裤子的关键词首页排名有哪些

1.使用

1.创建java工程

2.引入依赖

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.2.0</version>
</dependency>

3.

 //1.获取jedis对象,把所有对redis的操作都封装到该类中//默认连接本地localhost,端口号6379Jedis jedis=new Jedis("192.168.64.130",6379);//key操作Set<String> keys = jedis.keys("*");System.out.println(keys);//判断k1是否存在boolean k1 = jedis.exists("k1");System.out.println(k1);//对string类型的操作String set = jedis.set("name", "aaa");String name = jedis.get("name");System.out.println(name);long setnx = jedis.setnx("name", "bbb");System.out.println(setnx);//对hash类型的操作Map<String, String> map = new HashMap<>();map.put("name","张三");map.put("age","18");map.put("sex","男");jedis.hset("people",map);Map<String, String> people = jedis.hgetAll("people");System.out.println(people);jedis.close();

1.2.Jedis连接池

Jedis线程不安全

作用:

提供效率,减少频繁创建和销毁连接对象

 @Testpublic void test02(){//创建jedis连接池的配置JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();//最大值jedisPoolConfig.setMaxTotal(10);//最小空闲值jedisPoolConfig.setMinIdle(5);//拿到jedis对象时,是否验证该对象可用jedisPoolConfig.setTestOnBorrow(true);//等待时间Duration of = Duration.of(1000, ChronoUnit.MILLIS);jedisPoolConfig.setMaxWait(of);//创建jedis连接池JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.64.130",6379);//获取jedis对象Jedis jedis=jedisPool.getResource();//key操作Set<String> keys = jedis.keys("*");System.out.println(keys);//判断k1是否存在boolean k1 = jedis.exists("k1");System.out.println(k1);//对string类型的操作String set = jedis.set("name", "aaa");String name = jedis.get("name");System.out.println(name);long setnx = jedis.setnx("name", "bbb");System.out.println(setnx);//对hash类型的操作Map<String, String> map = new HashMap<>();map.put("name","张三");map.put("age","18");map.put("sex","男");jedis.hset("people",map);Map<String, String> people = jedis.hgetAll("people");System.out.println(people);jedis.close();}

 @Testpublic void test02_1(){JedisPool jedisPool=new JedisPool("192.168.64.130",6379);jedisPool.setMaxTotal(10);jedisPool.setMaxIdle(5);jedisPool.setMaxWait(Duration.of(1000, ChronoUnit.MILLIS));//获取jedis对象Jedis jedis=jedisPool.getResource();jedisPool.close();}

2.java连接redis集群

@Testpublic void test05(){Set<HostAndPort> nodes=new HashSet<HostAndPort>();nodes.add(new HostAndPort("192.168.64.130",7001));nodes.add(new HostAndPort("192.168.64.130",7002));nodes.add(new HostAndPort("192.168.64.130",7003));nodes.add(new HostAndPort("192.168.64.130",7004));nodes.add(new HostAndPort("192.168.64.130",7005));nodes.add(new HostAndPort("192.168.64.130",7006));JedisCluster jedisCluster=new JedisCluster(nodes);jedisCluster.set("k1","v1");String k1 = jedisCluster.get("k1");System.out.println(k1);jedisCluster.close();}

3.springboot整合redis

在springboot中提供了俩个封装类RedisTemplate和StringRedisTemplate。StringRedisTemplate是
RedisTemplate的子类,StringRedisTemplate存储的元素值,都是String类型,不能直接存储对象类型。

1.依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.配置文件

#redis相关配置
spring.data.redis.host=192.168.64.130
spring.data.redis.port=6379
#使用哪个数据库
spring.data.redis.database=0
#不建议使用jedis连接池——线程安全问题,简易lettuce
spring.data.redis.lettuce.pool.max-active=10
spring.data.redis.lettuce.pool.max-idle=3
spring.data.redis.lettuce.pool.max-wait=10000

3.测试

3.1StringRedisTemplate

@Autowiredprivate StringRedisTemplate redisTemplate;@Testpublic void test01() throws JsonProcessingException {//操作redis服务 key操作Boolean k1 = redisTemplate.delete("k1");System.out.println(k1);Boolean k11 = redisTemplate.hasKey("k1");System.out.println(k11);//2.string操作,redis对每一种类型的操作都封装了相应的类,由相应类对象操作相应的数据类型ValueOperations<String, String> forValue = redisTemplate.opsForValue();forValue.set("k1","v1",30, TimeUnit.SECONDS);String k12 = forValue.get("k1");System.out.println(k12);//可以通过序列化吧对象转换为相应的json字符ObjectMapper objectMapper=new ObjectMapper();forValue.set("k3",objectMapper.writeValueAsString(new User("bbb", 18)));String k3 = forValue.get("k3");//反序列化User user = objectMapper.readValue(k3, User.class);System.out.println(user);//如果指定的key存在则存储失败,如果不存在则存储成功Boolean k13 = forValue.setIfAbsent("k2", "333", 30, TimeUnit.SECONDS);System.out.println(k13);//3.hash操作HashOperations<String, Object, Object> forHash = redisTemplate.opsForHash();forHash.put("people","name","aaa");forHash.put("people","age","18");Map<Object, Object> people = forHash.entries("people");System.out.println(people);}

上面的StringRedisTemplate的key和value都是string类型

默认不能存储对象类型,要想存储需要把对象序列化,获取时反序列化

3.2RedisTemplate

@Data
@AllArgsConstructor
@NoArgsConstructor
//默认采用jdk的序列化方式
public class User implements Serializable {private String name;private Integer age;
}
 @Autowiredprivate RedisTemplate redisTemplate;@Testpublic void test02(){//可以操作字符串类型ValueOperations valueOperations = redisTemplate.opsForValue();valueOperations.set("k1","v1");System.out.println(valueOperations.get("k1"));//User类不能序列化valueOperations.set("k2",new User("张三",18));System.out.println(valueOperations.get("k2"));}

因为RedisTemplate默认序列化方式为jdk序列化方式,可以指定序列化方式

redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Object.class));
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));

使用一次需要设置一次

可以使用配置类

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){RedisTemplate<String, Object> template= new RedisTemplate<>();RedisSerializer<String> redisSerializer=new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer=new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om=new ObjectMapper();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);template.setConnectionFactory(factory);//key序列化方式template.setKeySerializer(redisSerializer);//value序列化方式template.setValueSerializer(jackson2JsonRedisSerializer);template.setHashKeySerializer(redisSerializer);template.setHashValueSerializer(jackson2JsonRedisSerializer);return template;}
}

如果使用对象类型建议使用RedisTemplate,基本数据类型StringRedisTemplate

关键字:已备案域名购买网址低价_北京网站建设咨询公司_金华网站推广_seo裤子的关键词首页排名有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: