Redis基本操作

欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot

REmote DIctionary Server(Redis) 是一个key-value存储系统。
它通常被称为数据结构服务器,因为值(value)可以是字符串 (String) , 哈希 (Hash) , 列表 (list) , 集合 (sets) 和 有序集合 (sorted sets) 等类型

1.Redis 数据类型

  • key:字符串
  • value:
    • String:字符串
    • hash:map
    • list:linkedlist(列表,有序&可重复)
    • set:集合,无序&不可重复
    • sortedset:集合,自动排序

2.Redis 基本操作

  1. String
    • 存:set key value
    • 取:get key
    • 删:del key
  2. hash(map)
    • 存:hash key field value
    • 取:hget key field , hgetall key
    • 删:hdel key field
  3. list
    • 存:lpush key value(加入左边),rpush key value(加入右边)
    • 取:lrange key start end(范围获取)
    • 删:lpop key(删左并返回),rpop key(删右并返回)
  4. set
    • 存:sadd key value
    • 取:smembers key(取所有)
    • 删:srem key value(删除某一值)
  5. sortedset(按score排序)
    • 存:zadd key score value
    • 取:zrange key start end with scores
    • 删:zren key value
  6. 通用命令
    • keys * :查所有键
    • type key:获取键对应value类型
    • del key:删除指定key value

3.Java使用Redis

引入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.4.2</version>
</dependency>
public class JedisTest {
    
    /**
     * 快速入门
     */
    public void test1() {
        //1. 获取连接
        Jedis jedis = new Jedis("localhost", 6379);
        //2. 操作
        jedis.set("username", "zhangsan");
        //3. 关闭连接
        jedis.close();
    }
    
    /**
     * string 数据结构操作
     */
    public void test2() {
        //1. 获取连接
        Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
        
        //2. 操作
        //存储
        jedis.set("username", "zhangsan");
        //获取
        String username = jedis.get("username");
        
        //可以使用setex()方法存储可以指定过期时间的 key value
        jedis.setex("activecode", 20, "hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
        
        //3. 关闭连接
        jedis.close();
    }

    /**
     * hash 数据结构操作
     */
    public void test3() {
        //1. 获取连接
        Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
        
        //2. 操作
        // 存储hash
        jedis.hset("user", "name", "lisi");
        jedis.hset("user", "age", "23");
        jedis.hset("user", "gender", "female");

        // 获取hash
        String name = jedis.hget("user", "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 数据结构操作
     */
    public void test4() {
        //1. 获取连接
        Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
        
        //2. 操作
        // list 存储
        jedis.lpush("mylist", "a", "b", "c");//从左边存
        jedis.rpush("mylist", "a", "b", "c");//从右边存

        // list 范围获取
        List<String> mylist = jedis.lrange("mylist", 0, -1);

        // list 弹出
        String element1 = jedis.lpop("mylist");//c
        String element2 = jedis.rpop("mylist");//c

        // list 范围获取
        List<String> mylist2 = jedis.lrange("mylist", 0, -1);

        //3. 关闭连接
        jedis.close();
    }


    /**
     * set 数据结构操作
     */
    public void test5() {
        //1. 获取连接
        Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
        
        //2. 操作
        // set 存储
        jedis.sadd("myset", "java", "php", "c++");

        // set 获取
        Set<String> myset = jedis.smembers("myset");

        //3. 关闭连接
        jedis.close();
    }

    /**
     * sortedset 数据结构操作
     */
    public void test6() {
        //1. 获取连接
        Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
        
        //2. 操作
        // sortedset 存储
        jedis.zadd("mysortedset", 3, "亚瑟");
        jedis.zadd("mysortedset", 30, "后裔");
        jedis.zadd("mysortedset", 55, "孙悟空");

        // sortedset 获取
        Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
        
        //3. 关闭连接
        jedis.close();
    }

    /**
     * jedis连接池使用
     */
    public void test7() {
        //0.创建一个配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50); //最大连接数
        config.setMaxIdle(10);  //最大闲置个数

        //1.创建Jedis连接池对象
        JedisPool jedisPool = new JedisPool(config, "localhost", 6379);

        //2.获取连接
        Jedis jedis = jedisPool.getResource();
        
        //3. 使用
        jedis.set("hehe", "heihei");
        
        //4. 关闭 归还到连接池中
        jedis.close();
    }
}
posted @ 2019-08-07 15:42  LittleDonkey  阅读(174)  评论(0编辑  收藏  举报