之前在学习 Redis 基础的时候,我们都是使用 Redis 的命令行。但是除了命令行,还有主流的语言支持的客户端。如果你打开 Redis 的官网,里面找到 Clients,就能找到你熟悉的语言对应的客户端,如下图所示。
Redis官网.png本文我们将主要讲解 redis-py(Python 客户端)、Jedis(Java 客户端),其他语言的客户端也都差不多。当你选择某个语言点进去后,你会发有笑脸和黄色五角星。五角星表示 Redis 推荐的,笑脸表示社区比较活跃。建议选择有笑脸和五角星的客户端。
Python 客户端 redis-py
正确获取 redis-py
首先我们必须安装 Redis,注意不是安装 redis-py。打开你的命令行,如果你使用 CentOS 或者 Mac 系统,请直接使用 pip 工具安装。如果没有 pip,请先进行安装。下面我们介绍下如何安装它,已经安装的可以直接忽略。
1.下载 pip。进入 https://pypi.python.org/pypi/pip,下载第二项。
2.解压安装。
解压下载的文件(Windows 下用解压工具,如RAR,Linux 下终端输入 tar -xf pip-9.0.1.tar.gz,即tar -xf 文件名),进入解压后的文件夹中,调出命令行窗口或者终端。
在 Windows 下输入:
python setup.py install
在Linux下输入:
sudo python setup.py install
安装成功后测试下,输入以下命令,输出 pip 版本号即表示安装成功。
pip -v
然后选择执行以下 pip 命令,安装 Redis。
- pip install redis,如果你使用的是 CentOS 系统,打开命令行,使用该命令安装;
- easyinstall redis,如果使用 Ubuntu 系统,使用easyinstall 来安装
当然你也可以使用源码安装,如下。
git clone https://github.com/andymccurdy/redis-py.git
cd redis-py //进入redis-py目录
python setup.py install //开始安装
使用 redis-py 客户端
要使用 redis-py 客户端,我们需通过代码来连接。如何连接呢?打开你的 Python 编辑器。
redis-py 提供了两个类:StrictRedis 和 Redis,用于实现 Redis 的命令,这里推荐使用 StrictRedis。StrictRedis 实现了绝大部分官方的命令,并且使用原生的语法和命令。比如,SET 命令对应着 StrictRedis.set 方法。下面是个简单的例子。
//代码连接Redis
import redis // 导入Redis
client = redis.StrictRedis(host='127.0.0.1',port=6379) // 通过 redis.StrictRedis 连接 Redis
key = "welcome"
setResult = client.set(key, "redis-py") // SET命令
print setResult //打印这个值
value = client.get(key) //在 Redis 使用 GET 命令获取 key 的值
print "key = "+ key +" value="+value //打印
简单的使用
上面我们讲了如何连接 redis-py 客户端,下面我们使用各种数据类型来设置和获取信息,后面都有注释。每个序号表示一种数据类型。
1.String
client.set("redis","helloworld") // redis返回True
client.get("redis") // redis返回helloworld
client.incr("counter") //自增+1
2.Hash
client.hset("hashvalue","a1","b1") // hash设置hashvalue的值1
client.hset("hashvalue","a2","b2")// hash设置hashvalue的值2
client.hgetall("hashvalue") // redis返回{a1:b1,a2:b2}
3.List
client.rpush("listvalue","a") // list设置是rpush
client.rpush("listvalue","b")
client.rpush("listvalue","c")
client.lrange("listvalue",0,-1) // redis返回['a','b','c']
4.Set
client.sadd("setvalue","a") // set设置是sadd
client.sadd("setvalue","b")
client.sadd("setvalue","c")
client.smembers("setvalue") // setredis返回['a','b','c']
5.Zset
client.zadd("zsetvalue","1","book1") // zset设置是zadd
client.zadd("zsetvalue","2","book2")
client.zadd("zsetvalue","3","book3")
client.zrange("zsetvalue",0,-1,withscores=True) // withscores表示含索引值,redis返回[('book3',3.0),('book2',2.0),('book1',1.0)]
怎么样,这些方法简单吗?我们再来讲一下使用 Java 客户端。
Java客户端 Jedis
正确获取 Jedis
方式一,jar 包的获取,相信很多刚学 Java 的朋友就是这么找包的,这里不推荐,推荐大家使用 Maven。关于如何使用 Maven,大家可以找度娘,实在搞不定也可以咨询我。
当然如果你需要使用 Redis 连接池,那你还需要一个 jar 包(还是不推荐,建议用 Maven),点击这里,获取下载地址。
方式二,使用 Maven 管理,只有在 Maven 里增加了 Jedis 客户端的配置,才能执行下面的代码,否则报错。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
使用 Jedis 客户端
使用 Jedis 也是非常简单,只需要 new 一个 Jedis 对象,然后调用 SET 和 GET 就 OK 了,简单吧。
Jedis jedis = new Jedis("127.0.0.1",6379); // Ip, 端口,连接超时,读写超时
jedis.set("hello","world");
jedis.get("hello");
jedis.close(); // 记得要close掉,这是一个良好的习惯。
简单的使用
连接完 Jedis,我们再介绍一下常用的三种数据类型,其他的参照 redis-py,都是大同小异。
1.String
jedis.set("hello","world"); //string是最常用的,用set设置
jedis.get("hello"); // get获取
jedis.incr("counter"); //自增1
2.Hash
jedis.hset("hello","v1","f1"); //hash设置用hset
jedis.hset("hello","v2","f2");
jedis.hgetAll("hello"); // redis返回{v1=f1,v2=f2}
3.List
jedis.rpush("vss","1"); //list设置用rpush
jedis.rpush("vss","2");
jedis.rpush("vss","3");
jedis.lrange("vss",0,-1); //redis返回[1,2,3]
当然,我们不仅要使用 Redis,还会使用 Jedis 的连接池。为什么要使用连接池呢?因为 Jedis 对象不是线程安全的,在多线程下会发生并发问题。为了避免这些问题,Jedis 提供了 JedisPool 连接池,示例代码如下。
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); //JedisPool是单例的,需要new一个GenericObjectPoolConfig对象
JedisPool jedisPool = new JedisPool(poolConfig,"127.0.0.1",6379); // 建立连接池的连接
Jedis jedis = null; // 类似于new一个jedis对象
try{
jedis = jedisPool.getResource(); // 从连接池获取Jedis对象
jedis.set("hello","world"); // 设置
}catch(Exception e){
e.printStackTrace();
}finally{
if(jedis!=null){
jedis.close();// 注意不是关闭,而是归还到连接池
}
}
其他语言都可以参照上面的 Python 和 Java 的客户端,内容方面都差不多,而且 Jedis 主要是掌握其原理和流程,操作其实是非常简单的。如果你有什么疑问,不妨给我留言。
如果你需要了解对应的 API,请点击这里,从中选择你要用的语言对应的客户端。
网友评论