Jedis连接Redis(初识四
Jedis操作各种redis中的数据结构
Jedis: 一款java操作redis数据库的工具.
第一步:创建maven项目,导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.0</version>
</dependency>
(1)注意:
确认远程服务器是否可以ping通: ping vm的ip地址
( 2)确认防火墙是否关闭或放行
service iptables stop
service iptables status
第二步:链接服务器
方案一
单实例链接
Jedis jedis = new Jedis(“ip地址”, 端口号);//建立链接
核心代码:
@Test
public void String(){
//创建对象//连接虚拟机的地址
Jedis jedis=new Jedis("192.168.45.131",6380);
//执行操作
jedis.set("username","kk");
//关闭
jedis.setex("age",10,"18");
String username = jedis.get("username");
System.out.println("username:"+username);
Long username1 = jedis.del("username");
System.out.println(username1);
jedis.close();
}
常见异常:
解决方案:
虚拟机客户端连接的ip是127.0.0.1,意思是连接的本机,其他机器无法连接,这里需要修改配置文件,将连接地址改为虚拟机的地址,就可以了.
修改redis.conf文件里面的 bind 连接地址,将连接地址改为自己虚拟机的ip
bind 192.168.197.129
重新启动服务,Jedis就可以正常连上了
Idea中控制台打印:
字符串类型 string
set
get
/*字符串类型*/
@Test
public void String(){
//创建对象//连接虚拟机的地址
Jedis jedis=new Jedis("192.168.45.131",6380);
//2. 操作
//存储
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
//可以使用setex()方法存储可以指定过期时间的 key value
jedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
//3. 关闭连接
jedis.close();
}
哈希类型 hash : map格式
hset
hget
hgetAll
/*哈希类型*/
@Test
public void Hash(){
//创建对象//连接虚拟机的地址
Jedis jedis=new Jedis("192.168.45.131",6380);
//2. 操作
// 存储hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","female");
// 获取hash
String name = jedis.hget("user", "name");
System.out.println(name);
// 获取hash的所有map中的数据
Map<String, String> user = jedis.hgetAll("user");
// keyset
Set<String> keySet = user.keySet();
for (String key : keySet) {
//获取value
String value = user.get(key);
System.out.println(key + ":" + value);
}
//3. 关闭连接
jedis.close();
}
列表类型 list : linkedlist格式
lpush / rpush
lpop / rpop
lrange start end : 范围获取
/*列表类型*/
@Test
public void List(){
//创建对象//连接虚拟机的地址
Jedis jedis=new Jedis("192.168.45.131",6380);
//2. 操作
// list 存储
jedis.lpush("mylist","a","b","c");//从左边存
jedis.rpush("mylist","a","b","c");//从右边存
// list 范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
// list 弹出
String element1 = jedis.lpop("mylist");//c
System.out.println(element1);
String element2 = jedis.rpop("mylist");//c
System.out.println(element2);
// list 范围获取
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist2);
//3. 关闭连接
jedis.close();
}
集合类型 set
sadd
smembers:获取所有元素
/*集合类型*/
@Test
public void Set(){
//创建对象//连接虚拟机的地址
Jedis jedis=new Jedis("192.168.45.131",6380);
//添加
jedis.sadd("username","h");
jedis.sadd("username","d","t");
//获取
Set<String> username =jedis.smembers("username");
System.out.println(username);
jedis.close();
}
有序集合类型 sortedset
zadd
zrange
/*有序集合*/
@Test
public void SortedSet(){
//创建对象//连接虚拟机的地址
Jedis jedis=new Jedis("192.168.45.131",6380);
// sortedset 存储
jedis.zadd("sroce",90,"lisi1");
jedis.zadd("sroce",60,"lisi2");
jedis.zadd("sroce",80,"lisi3");
// sortedset 获取
Set<String> sroce = jedis.zrange("sroce", 0, -1);
System.out.println(sroce);
//3. 关闭连接
jedis.close();
}
jedis连接池: JedisPool
使用:
1. 创建JedisPool连接池对象
2. 调用方法 getResource()方法获取Jedis连接
// 1.获取连接池配置对象,设置配置项
JedisPoolConfig config = new JedisPoolConfig();
// 1.1最大的连接数
config.setMaxTotal(30);
// 1.2最大的空闲
config.setMaxIdle(10);
// 2.获取连接池
JedisPool jedisPool = new JedisPool(config, "192.168.197.129", 6379);
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
// 3.设置数据
jedis.set("name", "张三");
String name = jedis.get("name");
System.out.println("name=" + name);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
// 4.虚拟机关闭的时候,释放资源
if (jedisPool != null) {
jedisPool.close();
}
}