Java客户端 Jedis
Jedis: 一款java操作redis数据库的工具.
使用步骤:
1. 下载jedis的jar包
2. 使用
//1. 获取连接
Jedis jedis = new Jedis("localhost",6379);
//2. 操作
jedis.set("username","zhangsan");
//3. 关闭连接
jedis.close();
Jedis操作各种redis中的数据结构
1) 字符串类型 string
set
get
2) 哈希类型 hash : map格式
hset
hget
hgetAll
3) 列表类型 list : linkedlist格式。支持重复元素
lpush / rpush
lpop / rpop
lrange start end : 范围获取
4) 集合类型 set : 不允许重复元素
sadd
smembers:获取所有元素
5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
zadd
zrange
package com.fgy.jedis.test;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class JedisTest {
private Jedis jedis;
@Before
public void before() {
jedis = new Jedis();
// jedis = new Jedis("localhost", 6379);
jedis.auth("root");
}
@After
public void after() {
if (jedis != null) {
jedis.close();
}
}
@Test
public void testString() {
jedis.set("age", "10");
String age = jedis.get("age");
System.out.println(age);
// 可以指定过期时间的 key value
jedis.setex("activecode", 20, "hehe"); // 20秒过期
}
@Test
public void testHash() {
jedis.hset("myHash", "name", "张三");
String name = jedis.hget("myHash", "name");
System.out.println(name);
System.out.println("------------------------------------");
jedis.hset("myHash", "gender", "男");
Map<String, String> map = jedis.hgetAll("myHash");
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for (Map.Entry<String, String> entry : entrySet) {
System.out.println(entry.getKey() + "---" + entry.getValue());
}
System.out.println("------------------------------------");
Long hdel = jedis.hdel("myHash", "name");
System.out.println(hdel);
}
@Test
public void testList() {
jedis.lpush("myList", "a", "b", "c");
jedis.rpush("myList", "a", "b", "c");
List<String> list = jedis.lrange("myList", 0, -1);
for (String s : list) {
System.out.println(s);
}
String element1 = jedis.rpop("myList");
String element2 = jedis.lpop("myList");
System.out.println(element1 + "--" + element2);
}
@Test
public void testSet() {
jedis.sadd("mySet", "lily", "zhangsan");
Set<String> mySet = jedis.smembers("mySet");
for (String s : mySet) {
System.out.println(s);
}
System.out.println("------------------------");
Long srem = jedis.srem("mySet", "zhangsan");
System.out.println(srem);
}
@Test
public void testSortedset() {
jedis.zadd("mySortedset", 3, "c");
jedis.zadd("mySortedset", 2, "b");
jedis.zadd("mySortedset", 1, "a");
Set<String> set = jedis.zrange("mySortedset", 0, -1);
for (String s : set) {
System.out.println(s);
}
Long zrem = jedis.zrem("mySortedset", "a");
System.out.println(zrem);
}
@Test
public void testCommon() {
Set<String> set = jedis.keys("*");
for (String s : set) {
System.out.print(s);
String type = jedis.type(s);
System.out.println(" " + type);
jedis.del(s);
}
}
}
jedis连接池: JedisPool
使用:
1. 创建JedisPool连接池对象
2. 调用方法 getResource()方法获取Jedis连接
//0.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
//1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
//2.获取连接
Jedis jedis = jedisPool.getResource();
//3. 使用
jedis.set("hehe","heihei");
//4. 关闭 归还到连接池中
jedis.close();
package com.fgy.jedis.test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* jedis连接池的使用
*/
public class JedisPoolTest {
public static void main(String[] args) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); // 设置最大连接数
config.setMaxIdle(10); // 设置最大空闲连接
JedisPool jedisPool = new JedisPool(config, "localhost", 6379, 2000, "root");
Jedis jedis = jedisPool.getResource();
jedis.set("name", "lily");
jedis.close();
}
}
jedis详细配置
#最大活动对象数
redis.pool.maxTotal=1000
#最大能够保持idel状态的对象数
redis.pool.maxIdle=100
#最小能够保持idel状态的对象数
redis.pool.minIdle=50
#当池内没有返回对象时,最大等待时间
redis.pool.maxWaitMillis=10000
#当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
#“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.
redis.pool.timeBetweenEvictionRunsMillis=30000
#向调用者输出“链接”对象时,是否检测它的空闲超时;
redis.pool.testWhileIdle=true
# 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.
redis.pool.numTestsPerEvictionRun=50
#redis服务器的IP
redis.ip=xxxxxx
#redis服务器的Port
redis.port=6379
来源:https://www.cnblogs.com/roadlandscape/p/12244393.html