package redis.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool; /**
* 描述:Jedis连接池工具类
* 【时间 2019-05-20 15:13:34 作者 陶攀峰】
*/
public class JedisPoolUtil
{ private static volatile JedisPool jedisPool=null; private JedisPoolUtil() {} /**
* 描述:获取
* 【时间 2019-05-21 11:02:24 作者 陶攀峰】
*/
public static JedisPool getJeidPoolInstance()
{
if (jedisPool==null)
{
synchronized (JedisPoolUtil.class)
{
if (jedisPool==null)
{
jedisPool=new JedisPool("192.168.37.160",6379);
}
}
}
return jedisPool;
} /**
* 描述:关闭
* 【时间 2019-05-21 11:02:13 作者 陶攀峰】
*/
public static void close(JedisPool jedisPool,Jedis jedis)
{
if (jedis!=null)
{
jedisPool.returnResourceObject(jedis);
}
} }

描述:Jedis连接池工具类

package redis.redis;

import redis.clients.jedis.BinaryClient.LIST_POSITION;

import java.util.HashMap;
import java.util.Map; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Transaction; /**
* 描述:操作数据库
* 【时间 2019-05-20 15:28:46 作者 陶攀峰】
*/
public class Redis_Test { public static void main(String[] args) {
JedisPool jedisPool=JedisPoolUtil.getJeidPoolInstance();
Jedis jedis=null;
try {
jedis=jedisPool.getResource();//获取
System.out.println("连接:"+jedis.ping());//测试连接性 正常返回PONG
transaction(jedis);//事务
basics(jedis);//基础操作
} catch (Exception e) {
e.printStackTrace();
}finally {//关闭
JedisPoolUtil.close(jedisPool, jedis);
}
} /**
* 描述:Redis事务
* 【时间 2019-05-20 15:33:59 作者 陶攀峰】
*/
public static void transaction(Jedis jedis){
int k3=10;
jedis.watch("k1"); //Thread.sleep(7000); if (Integer.parseInt(jedis.get("k1"))<k3) {
jedis.unwatch();
System.out.println("---modify---");
}else {
Transaction transaction=jedis.multi();
transaction.decrBy("k1", k3);
transaction.incrBy("k2", k3);
transaction.exec();
System.out.println("---"+jedis.get("k1")+"---"+jedis.get("k2"));
}
} /**
* 描述:Redis基础
* 【时间 2019-05-21 08:07:33 作者 陶攀峰】
*/
public static void basics(Jedis jedis) {
jedis.set("k1", "v1");
jedis.set("k2", "v2");
System.out.println("当前数据库记录:"+jedis.dbSize());
System.out.println("jedis.keys(\"*\"):"+jedis.keys("*"));//获取所有key
jedis.select(1);//切换数据库 下标从0开始 到 15 ,共16个数据库
System.out.println(jedis.keys("*"));
System.out.println(jedis.dbSize());//当前库的数据大小 key的数量
System.out.println(jedis.randomKey());//随机出一个key
jedis.flushDB();//清空当前数据库
jedis.flushAll();//清空全部数据库
//-------------------String--------------------
jedis.set("k1", "v1");
System.out.println(jedis.get("k1"));
jedis.del("k1");
jedis.append("k1", "556677");//追加
System.out.println(jedis.get("k1"));
System.out.println(jedis.strlen("k1"));//得到长度 jedis.set("k2", "2");
jedis.incr("k2");//增加1
jedis.decr("k2");//减少1
jedis.incrBy("k2", 5);//增加5
jedis.decrBy("k2", 20);//减少20
System.out.println(jedis.get("k2"));
jedis.flushAll();//清空全部数据库
jedis.set("k3", "tpf951101");
System.out.println(jedis.getrange("k3", 2, 3));//从0开始包括2和3
System.out.println(jedis.setrange("k3", 2, "pf"));//从下标2开始 包括2 开始替换两个字符pf
System.out.println(jedis.get("k3")); jedis.setex("k3", 10, "v3");//10为过期时间 单位秒
System.out.println(jedis.get("k3"));
System.out.println(jedis.ttl("k3"));//返回还有多少秒到期,到期自动删除,-2已过期
jedis.setnx("k4", "v4");//不存在k4才能设值成功
System.out.println(jedis.get("k4")); jedis.flushAll();
jedis.mset("k1","v11","k2","v22");
System.out.println(jedis.mget("k1","k2"));
System.out.println(jedis.keys("*"));
jedis.set("k5", "v5");
jedis.del("k5");
jedis.msetnx("k4","v44","k5","v55");//全部不存在才能成功
System.out.println(jedis.mget("k4","k5")); System.out.println(jedis.getSet("k1", "19951101"));//先返回设值前内容再设值
//-------------------List--------------------
jedis.lpush("l1", "1","2","3","4","5");
jedis.rpush("l2", "11","22","33","44","55");
System.out.println(jedis.lrange("l1", 0, -1));//0 -1 查询全部
System.out.println(jedis.lrange("l2", 0, -1)); System.out.println(jedis.lpop("l1"));//删除表头、返回删除的内容
System.out.println(jedis.lpop("l2"));
System.out.println(jedis.rpop("l1"));//删除表尾、返回删除的内容
System.out.println(jedis.rpop("l2")); System.out.println(jedis.lindex("l1", 1));//返回下标1的内容
System.out.println(jedis.llen("l1"));//相当于list.size()
jedis.ltrim("l1", 2, 3);//截取2-3 包括2和3替换之前的内容
System.out.println(jedis.lrem("l1", 1, "33"));;//第一个为key 第二个为1 第三个为要删除的value 返回删除的条数
jedis.rpoplpush("l1", "l2");//把l1的尾添加到l2的头
jedis.lset("l2", 0, "333");//把下标为0的值 改为333 jedis.linsert("l2", LIST_POSITION.BEFORE, "3", "a3");
jedis.linsert("l2", LIST_POSITION.AFTER, "4", "a4"); System.out.println(jedis.lrange("l1", 0, -1));
System.out.println(jedis.lrange("l2", 0, -1)); //-------------------Set--------------------
jedis.sadd("s1", "1","2","3","4","5");
System.out.println(jedis.sismember("s1", "6"));//s1中是否存在6 存在true 不存在false
System.out.println(jedis.scard("s1"));//相当于list.size()
System.out.println(jedis.srem("s1", "5"));//删除s1中的5 成功返回1 失败返回0
System.out.println(jedis.srandmember("s1"));//随机出一条记录
System.out.println(jedis.srandmember("s1",3));//随机出三条记录
System.out.println(jedis.srandmember("s1",9));//如果大于等于记录数 就等于查询全部
System.out.println(jedis.spop("s1"));//随机删除一条数据
System.out.println(jedis.smove("s1", "s2", "3"));//把s1中的3移到s2的头 System.out.println(jedis.sdiff("s1","s2"));//s1有 s2没有
System.out.println(jedis.sinter("s1","s2"));//s1 s2 都有
System.out.println(jedis.sunion("s1","s2"));//s1 s2合集 System.out.println(jedis.smembers("s1"));
//-------------------Hash--------------------
jedis.hset("stu", "id", "7");
System.out.println(jedis.hget("stu", "id"));
Map<String, String> map=new HashMap<>();
map.put("id","13");
map.put("name", "daniu");
map.put("sex", "nan");
jedis.hmset("stu", map);
System.out.println(jedis.hmget("stu", "id","name","sex"));
System.out.println(jedis.hgetAll("stu"));
System.out.println(jedis.hdel("stu", "id","sex2"));//返回删除的数量 System.out.println(jedis.hlen("stu"));
System.out.println(jedis.hexists("stu", "name"));//存在true 不存在false System.out.println(jedis.hkeys("stu"));
System.out.println(jedis.hvals("stu")); System.out.println(jedis.hincrBy("stu", "id", 2));//每次增加2 返回增加后的数值
System.out.println(jedis.hincrByFloat("stu", "id", 3.4));//每次增加3.4 返回增加后的数值 System.out.println(jedis.hsetnx("stu", "id1", "99"));//插入成功返回1 失败返回0
//-------------------Zset--------------------
jedis.zadd("zs1", 60, "v1");
jedis.zadd("zs1", 70, "v2");
jedis.zadd("zs1", 80, "v3");
jedis.zadd("zs1", 90, "v4");
jedis.zadd("zs1", 100, "v5");
System.out.println(jedis.zrange("zs1", 0, -1)); System.out.println(jedis.zrangeByScore("zs1", 60, 90));//60<=score<=90的value值 System.out.println(jedis.zrem("zs1", "v5","v6"));//返回删除记录数 System.out.println(jedis.zcard("zs1"));//返回数量 System.out.println(jedis.zcount("zs1", 60, 80));//60<=score<=80的数量 System.out.println(jedis.zrank("zs1", "v4"));//返回所在位置下标 System.out.println(jedis.zscore("zs1", "v1"));//返回v1的score //zre表示把原本的数据逆转顺序之后,再读取,不改变原有数据
System.out.println(jedis.zrevrank("zs1", "v4"));
System.out.println(jedis.zrevrange("zs1", 0, -1));
} }

描述:操作数据库

Redis【4】Java Jedis 操作 Redis~的更多相关文章

  1. 【Redis】使用Jedis操作Redis

    Jedis介绍 jedis就是集成了redis的一些命令操作,封装了redis的java客户端. Jedis使用 使用jedis需要引入jedis的jar包,下面提供了maven依赖 jedis.ja ...

  2. java:redis(java代码操作redis,实体类mapper生成器(generator))

    1.redis_demo Maven  ItemMapper.xml: <?xml version="1.0" encoding="UTF-8" ?> ...

  3. <Redis> 入门四 Jedis操作Redis

    pom依赖 <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> < ...

  4. JAVA中通过Jedis操作Redis连接与插入简单库

    一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...

  5. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  6. Java中Jedis操作Redis与Spring的整合

    Redis是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop. ...

  7. Java代码操作Redis的sentinel和Redis的集群Cluster操作

    总共四台机器,crxy99,crxy98分别是主节点和从节点.   crxy97和crxy96是两个监控此主从架构的sentinel节点. 看代码: import org.junit.Test; im ...

  8. Jedis操作Redis数据库

    添加Maven依赖: <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</grou ...

  9. jedis操作redis的几种常见方式总结

    Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...

随机推荐

  1. 第十四周学习总结&课程实验报告

    课程总结 一.相关概念 1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统 ...

  2. C++如何限制对象在堆上或栈上生成

    1,限制类的对象只能生成在栈上 将 operator new 各种原型设为私有 #include <iostream> class OnlyOnStack { public: OnlyOn ...

  3. DPM(物体检测)

    1.DPM(物体检测流程) 1.计算DPM特征图 2.计算响应图 3.使用SVM对响应图进行分类 4.对最后的选框做局部检测识别 DPM的梯度提取方向,将图片中的四个区域进行区分,将有符号梯度方向从0 ...

  4. Array 操作

    一.数组拉平 function arrayFlat(arr) { return arr.reduce((pre, cur) => { const temp = Array.isArray(cur ...

  5. httpparase + httpclient 的运用

    这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Inte ...

  6. RN的win7开发环境部署和问题解决

    1安装node,配置环境变量 2.安装Android studioe,配置环境变量 3.安装python2 注意 Node 的版本必须高于 8.3,Python 的版本必须为 2.x(不支持 3.x) ...

  7. 使用matlab用优化后的梯度下降法求解达最小值时参数

    matlab可以用 -Conjugate gradient -BFGS -L-BFGS 等优化后的梯度方法来求解优化问题.当feature过多时,最小二乘计算复杂度过高(O(n**3)),此时 这一些 ...

  8. linux计划crontab

    linux计划crontab 启动crontab服务 一般启动服务用  /sbin/service crond start 若是根用户的cron服务可以用 sudo service crond sta ...

  9. DJANGO MODEL FORMSETS IN DETAIL AND THEIR ADVANCED USAGE

    Similar to the regular formsets, Django also provides model formset that makes it easy to work with ...

  10. 2D轮播图

    目录结构 index.html <!DOCTYPE html><html lang="en"><head> <meta charset=& ...