redis的java操作(一):java连接redis和对redis的基本操作

redis 是一个高性能的非关系型key-value数据库。redis支持存储string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型),为了保证效率,数据都是缓存在内存中。区别的是redis有着持久化的机制,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。一般我们来使用redis做缓存。当然,redis也可以做消息队列,但是在性能方面,redis做消息队列存在一些问题,笔者在后面会进行讲解。

关于redis的安装,请见笔者博客,连接地址为:https://blog.csdn.net/m0_38075425/article/details/81178573

下面介绍java对redis的基本操作:

1.首先是pom依赖:


    redis.clients
    jedis
    2.9.0

2.java代码:

public class RedisDemo {

    public static void main(String args[]){
        RedisDemo redisDemo = new RedisDemo();
        redisDemo.optionString();
        redisDemo.optionList();
        redisDemo.optionSet();
        redisDemo.optionMap();
    }

    public static JedisPool initRedis(){
        //Jedis连接池
        JedisPoolConfig config = new JedisPoolConfig();
        // 最大空闲连接数
        config.setMaxIdle(8);
        // 最大连接数
        config.setMaxTotal(8);
        // 获取连接的最大等待时间,如果超时就抛出异常
        config.setMaxWaitMillis(1000); 
        //参数分别为Jedis连接池实例、redis服务器地址、redis端口号、超时时间、密码(默认为空)、数据库索引(从0开始)
        JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379, 10000, null, 0);
        return jedisPool;
    }

    //字符串操作
    public void optionString(){
        Jedis jedis = initRedis().getResource();
        jedis.set("option_string", "字符串存放测试");
        System.out.println("字符串取值:" + jedis.get("option_string"));
        jedis.append("option_string", "追加之后的");
        System.out.println("字符串取值:" + jedis.get("option_string"));
        jedis.del("option_string");
        System.out.println("字符串取值:" + jedis.get("option_string"));
        jedis.close();
    }

    //list操作
    public void optionList(){
        Jedis jedis = initRedis().getResource();
        jedis.lpush("option_list", "l1"); // 从左边插入
        jedis.lpush("option_list", "l2");
        jedis.lpush("option_list", "l3");
        jedis.lpush("option_list", "l4");
        //jedis.rpush()方法为从右边插入
        // 从左到右遍历,3个参数分别是,key,开始位置,结束位置(-1代表到最后)
        List list = jedis.lrange("option_list", 0, -1); 
        System.out.println("List中的值为:" + list.toString());
        jedis.lpop("option_list");
        //jedis.lpop为删除右边
        // 从左到右遍历,3个参数分别是,key,开始位置,结束位置(-1代表到最后)
        List list2 = jedis.lrange("option_list", 0, -1); 
        System.out.println("List中的值为:" + list.toString());
        jedis.del("option_list");
        System.out.println("字符串取值:" + jedis.get("option_list"));
        jedis.close();
    }

    //set
    public void optionSet(){
        Jedis jedis = initRedis().getResource();
        // 添加元素,不可重复
        jedis.sadd("option_set", "s1", "s2", "s3", "s4");
        // 获取集合中的全部元素
        Set set = jedis.smembers("option_set");
        System.out.println("option_set:" + set);
        // 求集合的长度
        long length = jedis.scard("option_set");
        System.out.println("option_set:" + length);
        // 从option_set移除s2
        jedis.srem("option_set", ""); 
        set = jedis.smembers("option_set");
        System.out.println("从option_set中获取移除后的的元素:" + set);
        // 判断元素是否包含在该集合中
        boolean exist = jedis.sismember("option_set", "s4"); 
        System.out.println("检查lida是否包含在option_set中:" + exist);
        // 随机的移除option_set中的一个元素,并返回它
        String spop = jedis.spop("option_set");
        System.out.println("option_set中被随机移除的元素是:" + spop);
        jedis.del("option_set");
        System.out.println("字符串取值:" + jedis.get("option_set"));
        jedis.close();
    }

    //map
    public void optionMap(){
        Jedis jedis = initRedis().getResource();
        Map map = new HashMap();
        map.put("k1", "v1");
        map.put("k2", "v2");
        map.put("k3", "v3");
        map.put("k4", "1");
        // 存放一个map
        jedis.hmset("option_map", map);
        // 从redis中取map
        Map getMap = jedis.hgetAll("option_map"); 
        System.out.println("从redis中取回的option_map:" + getMap.toString());
        System.out.println();
        // 从map中取回一个或多个字段信息
        List hmget = jedis.hmget("option_map", "k1", "k3"); 
        System.out.println("从option_map中两个字段来看看:" + hmget);
        System.out.println();
        // 删除map中的一个或者多个字段
        jedis.hdel("option_map", "k1"); 
        getMap = jedis.hgetAll("option_map");
        System.out.println("从redis中取回的被删除后的option_map:" + getMap);
        System.out.println();
        // 求出集合的长度
        long length = jedis.hlen("option_map"); 
        System.out.println("option_map的长度为:" + length);
        System.out.println();
        // 判断某个字段是否存在于map中
        boolean exists = jedis.hexists("option_map", "k5"); 
        System.out.println("k5字段是否存在于option_map中:" + exists);
        System.out.println();
        // 获取map的所有字段名
        Set keys = jedis.hkeys("option_map");
        System.out.println("option_map的所有字段名:" + keys);
        System.out.println();
        // 获取map的所有字段值,实质的方法实现
        List values = jedis.hvals("option_map"); 
        System.out.println("option_map的所有字段值:" + values);
        System.out.println();
        // 给map的某个字段进行加法运算
        jedis.hincrBy("option_map", "k4", 10); 
        System.out.println("执行加法运行后的option_map:" + jedis.hgetAll("option_map"));
        System.out.println();
        // 删除map
        jedis.del("option_map"); 
        System.out.println("删除option_map后,option_map是否还存在redis中:" + jedis.exists("option_map"));
        System.out.println();
        System.out.println();

        jedis.close();
    }
}

关于各个方法,请见代码的注释。

你可能感兴趣的:(redis)