Redis - Client

Redis自带客户端 - redis-cli

官方自带的客户端,相当于shell操作。

启动命令为src/redis-cli

Java客户端 - Jedis

Maven依赖

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

连接方式

直连

redis_jedis_1

Jedis jedis = new Jedis("127.0.0.1", 6379);

jedis.set("hello", "world");
String value = jedis.get("hello");

连接池

redis_jedis_2

poolConfig = new GenericObjectPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379);

Jedis jedis = null;
try {
    jedis = jedisPool.getResource();
	
	jedis.set("hello", "world");
	String value = jedis.get("hello");
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (jedis != null) jedis.close(); // return resource to pool instead of destory
}

实战

// example 1
jedis.hset("myhash", "f1", "v1");
jedis.hset("myhash", "f2", "v2");
jedis.hgetAll("myhash");
// result -> {f1=v1, f2=v2}

// example 2
jedis.rpush("mylist", "1");
jedis.rpush("mylist", "2");
jedis.rpush("mylist", "3");
jedis.lrange("mylist", 0, -1);
// result -> [1,2,3]

Python客户端 - redis-py

Install

Source: https://github.com/andymccurdy/redis-py

Two ways:

  1. pip install redis
  2. download packages from source and run cmd python setup.py install

实战

import redis

client = redis.StrictRedis(host='127.0.0.1', port=6379)
key = "hello"
setResult = client.set(key, "python-redis")
print setResult
value = client.get(key)
print key + " " + value

Jedis配置优化

commons-pool配置参数

资源数控制

maxTotal,资源池最大连接数,默认8

maxIdle,资源池允许最大空闲连接数,默认8

minIdle,资源池确保最少空闲连接数,默认0

jmxEnabled,是否开启jmx监控,默认true

借还参数

blockWhenExhausted,当资源池连接用尽后,是否需要等待,默认true

maxWaitMillis,当资源池连接用尽后,最大等待时间,默认-1(永不超时),建议设置1000或其它

testOnBorrow,当借用连接时,是否需要检测有效性(ping),默认false

testOnReturn,当归还连接时,是否需要检测有效性(ping),默认false

如何确定maxTotal

举例

如何确定maxIdle和minIdle

常见问题

redis_pro_1

可能原因

解决思路:顺藤摸瓜,从log上入手,结合代码分析。

Fork me on GitHub