jedis里怎么设置数据的有效期?

jedis里怎么设置数据的有效期?,第1张

1、下载redis安装包,解压后进入redis目录,执行命令redis-server.exe redis.windows.conf,redis解压后目录如图。

2、项目中如何使用Jedis使用现在大家都喜欢用maven作为项目管理利器,那我只说明一下Maven如何使用jedis,只需要添加以下依赖就可以。

3、建立一个简单的连接

4、创建一个简单Jedis对象就是这样,告诉它的IP地址和端口号就可以,如果redis有密码,那需要在建立连接时,需要调用auth方法设置密码。当然,简单连接不适合真实的环境使用,需要有连接池支持 。建立Jedis连接池。

5、Jedis分片采用Hash算法和基于的Key模式匹配。Jedis定义一个Hash接口,如果觉得自带的不爽,可以自己实现一个Hash算法。Jedis自带的Hash的算法是MurmurHash 2.0 。

共同点:都提供了基于Redis *** 作的Java API,只是封装程度,具体实现稍有不同。

不同点:

是Redis的Java实现的客户端。支持基本的数据类型如:String、Hash、List、Set、Sorted Set。

特点:使用阻塞的I/O,方法调用同步,程序流需要等到socket处理完I/O才能执行,不支持异步 *** 作。Jedis客户端实例不是线程安全的,需要通过连接池来使用Jedis。

优点点:分布式锁,分布式集合,可通过Redis支持延迟队列。

用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。

基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以 *** 作单个Lettuce连接来完成各种 *** 作。

maven配置引入,(要加上版本号,我这里是因为Parent已声明)

application-dev.yml

redisson-config.yml

或者,配置 redisson-config.json

新建读取配置类

或者,在 application.yml中配置如下

4.3.1 丰富的jar支持,尤其是对 Netty NIO框架

4.3.2 丰富的配置机制选择,这里是详细的配置说明

关于序列化机制中,就有很多

4.3.3 API支持(部分展示),具体的 Redis -->RedissonClient ,可查看这里

4.3.4 轻便的丰富的锁机制的实现

参考 RedisTemplate 配置。

另外,还需要额外的配置类

基于spring缓存实现

不多说直接上代码:

<!-- redis -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

<exclusions>

<exclusion>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

</exclusion>

<exclusion>

<groupId>io.lettuce</groupId>

<artifactId>lettuce-core</artifactId>

</exclusion>

</exclusions>

</dependency>

<!-- 添加jedis客户端 -->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

</dependency>

<!--spring2.0集成redis所需common-pool2-->

<!-- 必须加上,jedis依赖此 -->

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-pool2</artifactId>

<version>2.5.0</version>

</dependency>

<!-- 将作为Redis对象序列化器 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.47</version>

</dependency>

#Matser的ip地址

redis.hostName=172.16.44.148

#端口号

redis.port=6379

#如果有密码

redis.password=

#客户端超时时间单位是毫秒 默认是2000

redis.timeout=10000

#最大空闲数

redis.maxIdle=300

#连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal

#redis.maxActive=600

#控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性

redis.maxTotal=1000

#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

redis.maxWaitMillis=1000

#连接的最小空闲时间 默认1800000毫秒(30分钟)

redis.minEvictableIdleTimeMillis=300000

#每次释放连接的最大数目,默认3

redis.numTestsPerEvictionRun=1024

#逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

redis.timeBetweenEvictionRunsMillis=30000

#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个

redis.testOnBorrow=true

#在空闲时检查有效性, 默认false

redis.testWhileIdle=true

package com.junsi.demo.config

import org.springframework.beans.factory.annotation.Value

import org.springframework.context.annotation.Bean

import org.springframework.context.annotation.Configuration

import org.springframework.context.annotation.PropertySource

import org.springframework.data.redis.connection.RedisConnectionFactory

import org.springframework.data.redis.connection.jedis.JedisConnectionFactory

import org.springframework.data.redis.core.RedisTemplate

import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer

import org.springframework.data.redis.serializer.StringRedisSerializer

import com.junsi.demo.utils.RedisUtil

import redis.clients.jedis.JedisPoolConfig

/**

* Redis配置类

* @author pzx

* 2019年6月8日

*/

@Configuration

@PropertySource("classpath:redis.properties")

public class RedisConfig {

@Value("${redis.maxIdle}")

private Integer maxIdle

@Value("${redis.maxTotal}")

private Integer maxTotal

@Value("${redis.maxWaitMillis}")

private Integer maxWaitMillis

@Value("${redis.minEvictableIdleTimeMillis}")

private Integer minEvictableIdleTimeMillis

@Value("${redis.numTestsPerEvictionRun}")

private Integer numTestsPerEvictionRun

@Value("${redis.timeBetweenEvictionRunsMillis}")

private long timeBetweenEvictionRunsMillis

@Value("${redis.testOnBorrow}")

private boolean testOnBorrow

@Value("${redis.testWhileIdle}")

private boolean testWhileIdle

@Value("${spring.redis.cluster.nodes}")

private String clusterNodes

@Value("${spring.redis.cluster.max-redirects}")

private Integer mmaxRedirectsac

/**

* JedisPoolConfig 连接池

* @return

*/

@Bean

public JedisPoolConfig jedisPoolConfig() {

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig()

// 最大空闲数

jedisPoolConfig.setMaxIdle(maxIdle)

// 连接池的最大数据库连接数

jedisPoolConfig.setMaxTotal(maxTotal)

// 最大建立连接等待时间

jedisPoolConfig.setMaxWaitMillis(maxWaitMillis)

// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)

jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis)

// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3

jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun)

// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis)

// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个

jedisPoolConfig.setTestOnBorrow(testOnBorrow)

// 在空闲时检查有效性, 默认false

jedisPoolConfig.setTestWhileIdle(testWhileIdle)

return jedisPoolConfig

}

/**

* @param jedisPoolConfig

* @return

*/

@Bean

public JedisConnectionFactory JedisConnectionFactory(JedisPoolConfig jedisPoolConfig){

JedisConnectionFactory JedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig)

//连接池

JedisConnectionFactory.setPoolConfig(jedisPoolConfig)

//IP地址

JedisConnectionFactory.setHostName("172.16.44.148")

//端口号

JedisConnectionFactory.setPort(6379)

//如果Redis设置有密码

//JedisConnectionFactory.setPassword(password)

//客户端超时时间单位是毫秒

JedisConnectionFactory.setTimeout(5000)

return JedisConnectionFactory

}

/**

* 实例化 RedisTemplate 对象

*

* @return

*/

@Bean

public RedisTemplate<String, Object>functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {

RedisTemplate<String, Object>redisTemplate = new RedisTemplate<>()

initDomainRedisTemplate(redisTemplate, redisConnectionFactory)

return redisTemplate

}

/**

* 设置数据存入 redis 的序列化方式,并开启事务

*

* @param redisTemplate

* @param factory

*/

private void initDomainRedisTemplate(RedisTemplate<String, Object>redisTemplate, RedisConnectionFactory factory) {

//如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!

redisTemplate.setKeySerializer(new StringRedisSerializer())

redisTemplate.setHashKeySerializer(new StringRedisSerializer())

redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer())

redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer())

// 开启事务

redisTemplate.setEnableTransactionSupport(true)

redisTemplate.setConnectionFactory(factory)

}

@Bean(name = "redisUtil")

public RedisUtil redisUtil(RedisTemplate<String, Object>redisTemplate) {

RedisUtil redisUtil = new RedisUtil()

redisUtil.setRedisTemplate(redisTemplate)

return redisUtil

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7879076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存