Java客户端: Jedis
* Jedis: 一款java操作redis数据库的工具.
* 使用步骤:
1. 下载Jedis的jar包
2. 使用
Jedis jedis = new Jedis("localhost", 6379);
jedis.set("password", "123");
jedis.close();
* Jedis操作各种redis中的数据结构
1) 字符串类型 string
set: 设置键
get: 获取键的值
* 代码:
Jedis jedis = new Jedis();
jedis.set("password", "123");
String username = jedis.get("password");
System.out.println(username);
jedis.setex("username",5, "zhangsan");
jedis.close();
2) 哈希类型 hash: 相当于map集合格式
hset: 设置 键 元素 值
hget: 获 键 元素 值
hgetAll: 获取 该 键 的 所有元素的值
* 代码:
Jedis jedis = new Jedis();
jedis.hset("person", "name", "zhangsan");
jedis.hset("person", "age", "23");
jedis.hset("person", "gender", "male");
String age = jedis.hget("person", "age");
System.out.println(age);
Map<String, String> person = jedis.hgetAll("person");
Set<String> fields = person.keySet();
for (String field : fields) {
String value = person.get(field);
System.out.println(field + ": " + value);
}
jedis.close();
3) 列表类型 list: 相当于linkedlist集合格式
lpush / rpush: 左边添加 / 右边添加
lpop / rpop: 左边弹出元素 / 右边弹出元素
lrange: 范围获取
* 代码:
Jedis jedis = new Jedis();
jedis.lpush("mylist", "a", "b", "c");
jedis.rpush("mylist", "a", "b", "c");
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
String element = jedis.lpop("mylist");
System.out.println(element);
String element2 = jedis.rpop("mylist");
System.out.println(element2);
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);
jedis.close();
4) 集合类型 set: 不允许重复元素
sadd: 创建集合
smembers: 获取所有元素
* 代码:
Jedis jedis = new Jedis();
jedis.sadd("myset", "1", "2", "3", "4", "5", "1", "2", "3", "4", "5");
Set<String> mySet = jedis.smembers("myset");
System.out.println(mySet);
jedis.close();
5) 有序集合类型 sortedset: 不允许重复元素, 且元素有顺序
zadd: 创建有序集合
zrange: 范围获取
* 代码:
Jedis jedis = new Jedis();
jedis.zadd("mysortedset", 50, "python");
jedis.zadd("mysortedset", 30, "c++");
jedis.zadd("mysortedset", 40, "java");
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset);
jedis.close();
* Jedis连接池: JedisPool
* 使用:
1. 创建JedisPool连接池对象
2. 调用方法 getResource()方法获取Jedis链接
* 使用JedisPool代码:
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
Jedis jedis = jedisPool.getResource();
jedis.set("hehe", "heihei");
jedis.close();
* 自己封装JedisPool代码(目的-->降低耦合度):
* Jedis连接池工具类:
private static JedisPool jedisPool;
static {
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties prop = new Properties();
try {
prop.load(is);
} catch (Exception e) {
e.printStackTrace();
}
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(prop.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(prop.getProperty("maxIdle")));
jedisPool = new JedisPool(config, prop.getProperty("host"), Integer.parseInt(prop.getProperty("port")));
}
public static Jedis getJedis(){
return jedisPool.getResource();
}
public static void close(Jedis jedis){
if (jedis != null) {
jedis.close();
}
}
* 操作代码:
Jedis jedis = JedisPoolUtils.getJedis();
jedis.set("hello", "world");
JedisPoolUtils.close(jedis);