Redis第3课:如何使用 Redis客户端

之前在学习 Redis 基础的时候,我们都是使用 Redis 的命令行。但是除了命令行,还有主流的语言支持的客户端。如果你打开 Redis 的官网,里面找到 Clients,就能找到你熟悉的语言对应的客户端,如下图所示。

Redis第3课:如何使用 Redis客户端_第1张图片
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 客户端的配置,才能执行下面的代码,否则报错。


    redis.clients
    jedis
    2.9.0

使用 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,请点击这里,从中选择你要用的语言对应的客户端。

你可能感兴趣的:(Redis第3课:如何使用 Redis客户端)