我是靠谱客的博主 飘逸猫咪,最近开发中收集的这篇文章主要介绍redis 学习笔记(八) jedis的介绍和使用一.jedis的简介二.hello jedis三.jedis的工具类已经相关应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.jedis的简介

                 Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。

                在官方网站里列一些Java的客户端,有JedisRedissonJredisJDBC-Redis、等其中官方推荐使用Jedis和Redisson。

                在企业中用的最多的就是Jedis。Jedis提供了完整Redis命令,而Redisson有更多分布式的容器实现。

                 常用的redis客户端工具包括 springDataRedis,lettuce

二.hello jedis

                             1.引入依赖

               

       
            <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>3.3.0</version>
            </dependency>

      
                2.编写代码

                             

                           3.结果展示

                            

三.jedis的工具类已经相关应用

                       

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPoolUtil {


    private static String Host="127.0.0.1";

    private static String Auth="123456";

    private static int PORT=6379;

    private static JedisPool jedisPool=null;

    private static int TIMEOUT=10000;

    private static int MAX_WAIT = 10000;
    /**
     * 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
     */
    private static boolean TEST_ON_BORROW = true;
    /**
     * 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
     */
    private static int MAX_IDLE = 200;

    static {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxIdle(MAX_IDLE);
            config.setTestOnBorrow(TEST_ON_BORROW);
            config.setMaxWaitMillis(MAX_WAIT);
            jedisPool = new JedisPool(config, Host, PORT, TIMEOUT, Auth);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Jedis getJedis() {
        if (jedisPool != null) {
            Jedis jedis = jedisPool.getResource();
            return jedis;
        }
        return null;
    }

    public static void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }







}

  

import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.ListPosition;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class jedisTest {


    public static Jedis connect() {
        //从redis 连接池中获取
        Jedis jedis = JedisPoolUtil.getJedis();
        return jedis;
    }

    public static void main(String[] args) {
        testString();
        testList();
        testMap();
        testSet();
        testSortSet();


    }


    /**
     * 操作string类型的key
     * string 是最基本的类型,而且 string 类型是二进制安全的。意思是 redis 的 string 可以 包含任何数据。
     * 比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 byte数组,最大上限是 1G 字节
     */

    public static void testString() {
        Jedis jedis = connect();
        jedis.set("name", "abel");
        // set 多个key and value
        jedis.mset("name", "abel", "age", "23", "qq", "123244232");
        //age  + 1
        jedis.incr("age");
        System.out.println(jedis.get("name"));
        // delete key
        jedis.del("name");
        jedis.close();
    }


    /**
     * 操作map
     * hash 是一个 string 类型的 field 和 value 的映射表。添加,删除操作都是 O(1)(平均)。
     * hash 特别适合用于存储对象。相对于将对象的每个字段存成单个 string 类型。将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。
     */
    public static void testMap() {
        Map<String, String> map = new HashMap<>();
        map.put("address", "上海");
        map.put("name", "abel");
        map.put("age", "23");
        Jedis jedis = connect();
        jedis.hmset("user", map);

        // 从map 中取出 value
        // 第一个参数是存入redis中map对象的key,后面跟的是放入map中的对象的key,后面的key可以跟多个,是可变
        List<String> getmap = jedis.hmget("user", "address");
        System.out.println(getmap);
        List<String> getmap2 = jedis.hmget("user", "address", "age");
        System.out.println(getmap2);

        //删除map中的某个键值
        jedis.hdel("user", "age");

        System.out.println(jedis.hlen("user")); //返回key为user的键中存放的值的个数2

        System.out.println(jedis.exists("user"));//是否存在key为user的记录 返回true
        System.out.println("all keys : " + jedis.hkeys("user"));//返回map对象中的所有key
        System.out.println("all values : " + jedis.hvals("user"));//返回map对象中的所有value

        //获取 user 中的所有key
        Set<String> keys = jedis.hkeys("user");
        keys.stream().forEach(x -> System.out.println("key: " + x));
    }

    /**
     * list 链表
     * list 是一个链表结构,可以理解为一个每个子元素都是 string 类型的双向链表
     */
    private static void testList() {
        Jedis jedis = connect();
        //移除 lists 中所有的内容
        jedis.del("lists");

        // 向key lists 链表头部添加字符串元素
        jedis.lpush("lists", "abel1");
        jedis.lpush("lists", "abel2");
        jedis.lpush("lists", "abel3");
        // 向key lists 链表尾部添加字符串元素
        jedis.rpush("lists", "abel4");
        jedis.rpush("lists", "abel5");

        //获取lists 的长度
        System.out.println(jedis.llen("lists"));
        //按顺序输出链表中所有元素
        System.out.println(jedis.lrange("lists", 0, -1));
        //在abel4 前插入 abelLinsert
        jedis.linsert("lists", ListPosition.BEFORE, "abel4", "abelLinsert");
        System.out.println(jedis.lrange("lists", 0, -1));

        //修改列表中指定下标2 的值  为abelLset
        jedis.lset("lists", 2, "abelLset");
        System.out.println(jedis.lrange("lists", 0, -1));


        //插入两个 abel2 为了后面的删除
        jedis.lpush("lists", "abel2");
        jedis.lpush("lists", "abel2");
        // 从 lists 中删除 3 个 value = abel2 的元素 , 可以不连续
        // 当删除 count = 0 个 时则删除全部 value = abel2 的元素
        jedis.lrem("lists", 0, "abel2");
        System.out.println(jedis.lrange("lists", 0, -1));

    }
    /**
     *
     * set 是无序集合,最大可以包含(2 的 32 次方-1)40多亿个元素。
     * set 的是通过 hash table 实现的, 所以添加,删除,查找的复杂度都是 O(1)。hash table 会随着添加或者删除自动的调整大小。
     */
    public static void testSet() {
        Jedis jedis = connect();
        jedis.sadd("person", "abel1");
        jedis.sadd("person", "abel2");
        jedis.sadd("person", "abel3");
        jedis.sadd("person", "abel4");
        jedis.sadd("person", "abel4");

        //获取所有加入的value
        System.out.println(jedis.smembers("person"));
        // 从 person 中 移除 abel4
        jedis.srem("person", "abel4");
        //获取所有加入的value
        System.out.println("values: " + jedis.smembers("person"));
        //判断 abels 是否是 person 集合的元素
        System.out.println(jedis.sismember("person", "abels"));
        //返回集合中的一个随机元素
        System.out.println(jedis.srandmember("person"));
        //返回集合的元素个数
        System.out.println(jedis.scard("person"));
    }


    /**
     * sorted
     * sorted set 是有序集合,它在 set 的基础上增加了一个顺序属性,这一属性在添加修 改元素的时候可以指定,每次指定后,会自动重新按新的值调整顺序。
     * 可以理解了有两列的 mysql 表,一列存 value,一列存顺序。
     * <p>
     * sort set和set类型一样,也是string类型元素的集合,也没有重复的元素,不同的是sort set每个元素都会关联一个权,
     * 通过权值可以有序的获取集合中的元素添加,删除,查找的复杂度都是O(1)
     */
    public static void testSortSet() {
        Jedis jedis = connect();
        System.out.println(jedis.flushDB());
        jedis.zadd("sortKey", 300, "abel");
        jedis.zadd("sortKey", 20, "mysql");
        jedis.zadd("sortKey", 40, "redis");

        // 按权值从小到大排序
        System.out.println(jedis.zrange("sortKey", 0, -1));
        // 按权值从大到小排序
        System.out.println(jedis.zrevrange("sortKey", 0, -1));

        // 元素个数
        System.out.println("元素个数:" + jedis.zcard("sortKey"));
        // 元素abel 的 下标
        System.out.println("元素xxx 的 下标:" + jedis.zscore("sortKey", "abel"));

        // 删除元素 abel
//        jedis.zrem("sortKey", "abel");

        //权值 0-100的总数
        System.out.println("0-100 的总数: " + jedis.zcount("sortKey", 0, 100));
        //给元素 redis 的 权值 + 50
        System.out.println("给元素的 权值  + 50: " + jedis.zincrby("sortKey", 50, "redis"));
        //权值在0-100的值
        System.out.println("权值在0-100的值: " + jedis.zrangeByScore("sortKey", 0, 100));
        //返回 mysql 的权值的排名,从0开始计数
        System.out.println(jedis.zrank("sortKey", "mysql"));
        // 输出整个集合值
        System.out.println("输出整个集合值: " + jedis.zrange("sortKey", 0, -1));
    }




}

 

运行结果:

          

 

 

 

 

 

 

最后

以上就是飘逸猫咪为你收集整理的redis 学习笔记(八) jedis的介绍和使用一.jedis的简介二.hello jedis三.jedis的工具类已经相关应用的全部内容,希望文章能够帮你解决redis 学习笔记(八) jedis的介绍和使用一.jedis的简介二.hello jedis三.jedis的工具类已经相关应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部