Redis 坑路3 -> 编程语言 Redis 客户端

第三方 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)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值