package utils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* Jedis连接数据库数工具类
*/
public class JedisHelper {
private static Jedis jedis;//非切片连接
private static JedisPool jedisPool; //非切片连接池
private static String host="127.0.0.1";//主机地址
private static int port=6379;//端口号
//初始化连接对象,配置参数
public static void InitJedis(){
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(5);//最大空闲连接数
jedisPoolConfig.setMaxWaitMillis(10000);//最大等待连接时间
jedisPoolConfig.setTestOnBorrow(false);//空闲时检查连接有效性,默认为false
jedisPool=new JedisPool(jedisPoolConfig,host,port);
}
//获取连接对象
public static Jedis getJedis(){
InitJedis();
try{
jedis=jedisPool.getResource();//获取连接对象
return jedis;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//关闭连接
public static void close(Jedis jedis,JedisPool jedisPool){
if(jedis!=null){
jedis.close();
}
if (jedisPool!=null){
jedisPool.close();
}
}
/*//测试连接
public static void main(String [] args){
System.err.println(JedisHelper.getJedis());
}*/
}
package dao;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Set;
/**
* 操作的通用方法
*/
public abstract class BaseOper {
public BaseOper(){}
//查看所有的key
public void showKeys(Jedis jedis) {
Set<String> keysSet=jedis.keys("*");
for(String s:keysSet){
System.out.println(s);
}
}
//查看所有key类型
public void showType(Jedis jedis){
}
}
package dao;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Set;
/**
* 操作set集合的接口
*/
public interface SetOper {
//向set集合中添加单个数据
public void sadd(Jedis jedis,String key,String value);
//向set集合中添加多个数据
public void sadds(Jedis jedis,String key,List<String> list);
//查看set集合数据
public void sshow(Jedis jedis,String key);
//移除指定单个元素
public void ssrem(Jedis jedis,String key,String sremValue); //sremValue指定移除的元素
//移除指定的多个元素
public void ssrems(Jedis jedis,String key,List<String> list);
//随机移除元素
public void spop(Jedis jedis,String key);
}
package dao;
import redis.clients.jedis.Jedis;
import utils.JedisHelper;
import java.util.List;
import java.util.Set;
public class SetOperImpl extends BaseOper implements SetOper {
@Override
public void showType(Jedis jedis) {
super.showType(jedis);
}
public SetOperImpl() {
super();
}
@Override
public void showKeys(Jedis jedis) {
super.showKeys(jedis);
}
@Override
public int hashCode() {
return super.hashCode();
}
//随机移除元素
@Override
public void spop(Jedis jedis, String key) {
jedis.spop(key);
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
//添加单个元素
@Override
public void sadd(Jedis jedis, String key, String value) {
jedis.sadd(key,value);
}
//添加多个元素
@Override
public void sadds(Jedis jedis, String key, List<String> list) {
for (String value:list){
jedis.sadd(key,value);
}
}
//展示指定集合的元素
@Override
public void sshow(Jedis jedis, String key) {
Set<String> strings=jedis.smembers(key);
for(String string:strings){
System.out.println(string);
}
}
//移除指定集合的指定单个元素
@Override
public void ssrem(Jedis jedis, String key, String sremValue) {
jedis.srem(key,sremValue);
}
//移除指定集合指定多个元素
@Override
public void ssrems(Jedis jedis, String key, List<String> list) {
for (String value:list){
jedis.srem(key,value);
}
}
/*public static void main(String [] args){
Jedis jedis= JedisHelper.getJedis();
SetOperImpl setOper=new SetOperImpl();
setOper.showKeys(jedis);
}*/
}
package main;
import dao.SetOperImpl;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import utils.JedisHelper;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Client {
private static Jedis jedis;
private static JedisPool jedisPool;
public static void main(String [] args){
jedis= JedisHelper.getJedis();
Boolean flag=true;
Scanner scanner=new Scanner(System.in);
while(flag){
System.out.println("1.操作Set集合");
System.out.println("2.查看所有键值");
System.out.println("3.查看键值类型");
System.out.println("0.退出");
System.out.println("请选择操作:");
int num=scanner.nextInt();
SetOperImpl setOper=new SetOperImpl();
if(num==0)
break;
switch (num){
case 1:
boolean setFlag=true;
while (setFlag){
System.out.println("1.向set集合中添加单个数据");
System.out.println("2.向set集合中添加多个数据");
System.out.println("3.移除指定单个元素");
System.out.println("4.移除指定的多个元素");
System.out.println("5.随机移除元素");
System.out.println("6.查看指定set集合元素");
System.out.println("0.返回上一级");
System.out.println("请选择操作:");
int numSet=scanner.nextInt();
if(numSet==0)
break;
switch (numSet){
case 1:
System.out.println("请输入键值:");
String keyAdd=scanner.next();
System.out.println("请输入元素值:");
String value=scanner.next();
setOper.sadd(jedis,keyAdd,value);
break;
case 2:
System.out.println("请输入键值:");
String keyAdds=scanner.next();
System.out.println("请输入需要输入元素个数:");
int size=scanner.nextInt();
List<String> list=new ArrayList<>();
System.out.println("请输入元素值:");
for(int i=0;i<size;i++){
String addsValue=scanner.nextLine();
list.add(addsValue);
}
setOper.sadds(jedis,keyAdds,list);
break;
case 3:
System.out.println("请输入键值:");
String keySrem=scanner.nextLine();
System.out.println("请输入指定移除的元素值:");
String valueSrem=scanner.nextLine();
setOper.ssrem(jedis,keySrem,valueSrem);
break;
case 4:
System.out.println("请输入键值:");
String keySrems=scanner.next();
System.out.println("请输入指定移除元素个数:");
int sizeSrems=scanner.nextInt();
List<String> listSrem=new ArrayList<>();
System.out.println("请输入元素值:");
for(int i=0;i<sizeSrems;i++){
String addsValue=scanner.nextLine();
listSrem.add(addsValue);
}
setOper.sadds(jedis,keySrems,listSrem);
break;
case 5:
System.out.println("请输入键值:");
String keyPop=scanner.nextLine();
setOper.spop(jedis,keyPop);
break;
case 6:
System.out.println("请输入键值:");
String keyShow=scanner.nextLine();
setOper.sshow(jedis,keyShow);
break;
default:
System.out.println("输入有误!");
break;
}
}
case 2:
setOper.showKeys(jedis);
break;
case 3:
setOper.showType(jedis);
break;
default:
System.out.println("输入错误!");
break;
}
}
JedisHelper.close(jedis,jedisPool);
}
}