第三方 Client 使用 Redis
Java 使用 redis
导入 Maven 依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Jedis 直连
1.生成一个 Jedis 对象,这个对象负责和指定 Redis节点进行通信
Jedis jedis = new Jedis(“127.0.0.1”,6379);
2.jedis 指定 set 操作
jedis.set(“hello”,”world”);
3.jedis 执行 get 操作,value = ‘world’
String value = jedis.get(“hello”);
Jedis(String host,int port,int connectionTimeout,int soTimeout);
- host:Redis 节点的所在机器的 IP
- port:Redis 节点的端口
- connectionTimeout:客户端连接超时
- soTimeout:客户端读写超时
Jedis 操作字符串 String
jedis.set("hello","world");
// 输出结果:OK
jedis.get("hello");
// 输出结果:world
jedis.incr("counter");
// 输出结果:1
Jedis 操作哈希 Hash
jedis.hset("myhash","f1","v1");
jedis.hset("myhash","f2","v2");
jedis.hgetAll("myhash");
// 输出结果:(f1=v1,f2=v2)
Jedis 操作列表 List
jedis.rpush("mylist","1");
jedis.rpush("mylist","2");
jedis.rpush("mylist","3");
jedis.lrange("mylist",0,-1);
// 输出结果:[1,2,3]
Jedis 操作集合 Set
jedis.add("myset","a");
jedis.add("myset","b");
jedis.add("myset","a");
jedis.smembers("myset");
// 输出结果:[b,a]
Jedis 操作有序集合 Zset
jedis.zadd("myzset",99,"Tom");
jedis.zadd("myzset",66,"Peter");
jedis.zadd("myzset",33,"Jame");
jedis.zrangeWithScores("myzset",0,-1);
// 输出结果:[[["Jame"],33.0],[["Peter"],66.0],[["Tom"],99.0]]
Java 使用 Jedis 的两种方案
Jedis 直连
Jedis 连接池
方案对比
优点 | 缺点 | |
直连 | 1.简单方便 2.适用于少量连接的场景 | 1.存在每次新建/关闭 TCP 开销 2.资源无法控制,存在连接泄露的可能 3.Jedis 对象线程不安全 |
连接池 | 1.Jedis 预先生成,降低开销使用 2.连接池的形式保护和控制资源的使用 | 相对于直连,使用相对麻烦,尤其在资源的管理上需要很多参数来保证,一旦规划不合理也会出现问题。 |
代码示例
// 初始化 Jedis 连接池,通常来讲 JedisPool 是单例的。GenericObjectPoolConfig
poolConfig = new GenericObjectPoolConfig();
JedisPool jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379);
Jedis jedis = null;
try{
// 1.从连接池获取 Jedis 对象
jedis = jedisPool.getResource();
// 2.执行操作
jedis.set(“hello”,”world”);
}catch(Exception e){
e.printStackTrace();
}finally{
if(jedis != null)
// 如果使用 JedisPool.close() 操作不是关闭连接,代表归还连接池
jedis.close();
}
Python 客户端 redis-py
获取 redis-py
1.pip install redis
2.easy_install redis
3.源码安装
wget https://github.com/andymccurdy/redis-py/archive/2.10.5.zip
unzip redis-2.10.5.zip
cd redis-2.10.5
# 安装 redis-py
sudo 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:' + key + ',value:' + value)
操作字符串 String
client.set('hello','world')
# 输出结果:True
client.get('hello')
# 输出结果:world
client.incr('counter')
# 输出结果:1
操作哈希 Hash
client.hset('myhash','f1','v1')
client.hset('myhash','f1','v1')
client.hgetall('myhash')
# 输出结果:{'f1':'v1','f2':'v2'}
操作列表 List
client.rpush('mylist','1')
client.rpush('mylist','2')
client.rpush('mylist','3')
client.lrange('mylist',0,-1)
# 输出结果:['1','2','3']
操作集合 Set
client.sadd('myset','a')
client.sadd('myset','b')
client.sadd('myset','a')
client.smembers('myset')
# 输出结果:set(['a','b'])
操作有序集合 Zset
client.zadd('myzset','99','Tom')
client.zadd('myzset','66','Peter')
client.zadd('myzset','33','Jame')
client.zrange('myzset',0,-1)
// 输出结果:[('Jame',33.0),('Peter',66.0),('Tom',99.0)]