引入依赖
pom.xml:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.3.0</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</scope></dependency>
测试
Jedis 对象的构造方法:
Jedis(String host,int port);Jedis(String host,int port,int connectionTimeout,int soTimeout);
- host:Redis 节点所在机器的 IP
- port:Redis 节点的端口
- connectionTimeout:客户端连接超时
- soTimeout:客户端读写超时
Jedis 使用(直连方式):
- 创建 Jedis 对象
- 选择要操作的数据库
- 执行相关操作
- 返回执行结果
关闭 Jedis 连接
public class JedisTest {private Jedis jedis;@Beforepublic void before(){// 1.创建jedis对象// 前提:redis服务开启远程连接jedis = new Jedis("47.113.89.216",6379);// 2.选择操作的数据库jedis.select(0);}@Afterpublic void after() {// 4.释放资源jedis.close();}@Testpublic void testKey() {// 查询所有符合规则的keySet<String> keys = jedis.keys("*");keys.forEach(System.out::println);// exists key1,[key2,...]:返回存在的key数Long exists = jedis.exists("name", "age");// del keys:删除key,返回删除的key数Long del = jedis.del("name", "age");// expire:设置key的超时时间Long sex = jedis.expire("sex", 10);// ttl:查看key的超时时间Long sex1 = jedis.ttl("sex");// randomKey:随机获取一个keyString s = jedis.randomKey();// rename:修改key名称String rename = jedis.rename("sex", "isMan");// type:查看对应key的值的类型String sex2 = jedis.type("sex");}@Testpublic void testString() {// 1. set key value:赋值final String time = jedis.set("time", LocalDateTime.now().toString());// 2. get key:取值,键不存在返回 nilfinal String time1 = jedis.get("time");// 3. mset key1 value1 [key2 value2...]:一次设置多个key valueString[] strings =new String[]{"key1","v1","key2","v2","key3","v3"};final String mset = jedis.mset(strings);// 4. mget key1 [key2 ...]:一次获取多个 keyString[] strings1 = new String[]{"key1","key2","key3","key4"};final List<String> mget = jedis.mget(strings1);// 5. getset key value:获取原始key的value值,同时设置新值final String set = jedis.getSet("key1", "new value1");// 6. strlen key:返回key存储的value的长度(**为字节数,注意不是字符数**)final Long key1 = jedis.strlen("key1");// 7. append key value:为对应 key 的value追加内容// 8. getrange 索引0开始:截取value的内容,开始 0,结尾 -1// 9. setex key seconds value:设置一个key存活的有效期(秒)// 10. psetex key milliseconds value:设置一个key存活的有效期(毫秒)// 11. setnx key value:key存在不做任何操作,不存在则添加// 12. msetnx key1 value1 [key2 value2...]:一次设置多个key value,只要有一个存在则不做添加,**原子操作**// 13. decr key:进行数据的 -1 操作// 14. decrby key decrement:根据指定的decrement进行减法操作// 15. incr key:进行数据的 +1 操作// 16. incrby key increment:根据指定的increment进行加法操作// 17. incrbyfloat key float:根据提供的数据加入浮点数}}
Jedis 连接池:
// 1.初始化连接池GenericObjectPoolConfig<Object> poolConfig = new GenericObjectPoolConfig<>();// 或者使用JedisPoolConfig,其继承了GenericObjectPoolConfigJedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(10);jedisPoolConfig.setMaxIdle(10);JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379);// 2.简单使用Jedis jedis = null;try {// 从连接池中获取对象jedis = jedisPool.getResource();// 执行操作jedis.set("user:1", "Bob");} catch (Exception e) {logger.error(e.getMessage(),e);} finally {if (jedis != null) {// 使用JedisPool,close操作不是关闭连接,而是归还连接池jedis.close();}}
commons-pool 配置:
| 参数名 | 含义 | 默认值 | 使用建议 |
|---|---|---|---|
| maxTotal | 资源池最大连接数 | 8 | |
| maxIdle | 资源池允许的最大空闲数 | 8 | 建议maxIdle=maxTotal |
| minIdle | 资源池确保最少空闲连接数 | 0 | |
| jmxEnabled | 是否开启jmx监控 | true | 建议开启 |
| blockWhenExhausted | 当资源池用尽后,调用者是否要等待,只有此属性设置为 true,下面的maxWaitMillis属性才能生效 | true | 建议使用默认值 |
| maxWaitMillis | 当资源池连接用尽后,调用者的最大等待时间(单位为 ms) | -1:表示永不超时 | 不建议使用默认值 |
| testOnBorrow | 向资源池借用连接时是否做连接有效性检测(ping),无效连接会被移除 | false | 建议false |
| testOnReturn | 向资源池归还连接时是否做连接有效性检测(ping),无效连接会被移除 | false | 建议false |
