2

Java操作Redis之操作数据

1.操作 String

1.1 源码

    public void stringOperator(){
        //添加数据
        jedis.set("name", "Wayfreem");// 添加一个 key 为 name, 然后 value 为 Wayfreem 
        System.out.println(jedis.get("name"));// 执行结果:xinxin
    
         //拼接指定的key
        jedis.append("name", " is my name");    //在 name 值的后继续追加 字符串    
        System.out.println(jedis.get("name"));
    
        // 删除某个键
        jedis.del("name");
        System.out.println("删除name 键之后:" + jedis.get("name"));
    
        jedis.mset("name", "Wayfreem", "age", "23", "qq", "5234XXXX"); // 设置多个键值对
        //进行加1操作
        jedis.incr("age"); 
        System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-"+ jedis.get("qq"));
    }

1.2 执行的结果

clipboard.png

1.3 在 redis-cli 中查看

clipboard.png

2.操作 Map

2.1 源码

public void mapOperator(){
    //添加数据
    Map<String, String> map = new HashMap<String, String>();
    map.put("name", "Wayfreem");
    map.put("age", "23");
    map.put("qq", "5234XXXX");
        
    //添加一个 user 的 key, value 为 map 
    jedis.hmset("user", map);
        
    //获取对应key下的value,用数组返回
    List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
    System.out.println(rsmap);
        
    // 删除map中的某个键值, 第一个参数是 map(现在的user),第二个参数是 map 中的 key
    jedis.hdel("user","age");
        
    System.out.println(jedis.hmget("user","age"));         // 删除了,返回null
    System.out.println(jedis.hlen("user"));             // 返回key为user的键中存放的值的个数2
    System.out.println(jedis.exists("user"));            // 是否存在key为user的记录 返回true
    System.out.println(jedis.hkeys("user"));            // 返回map对象中的所有key
    System.out.println(jedis.hvals("user"));            // 返回map对象中的所有value

    //循环出所有的key user下面的所有的 K-V
    Iterator<String> iter = jedis.hkeys("user").iterator();
    while (iter.hasNext()) {
        String key = iter.next();
        System.out.println(key + ":" + jedis.hmget("user", key));
    }
}

2.2 执行结果

clipboard.png

2.3 redis-cli 中查看

clipboard.png

3.操作List

3.1 源码

public void listOperator() {
    //删除指定的key
    jedis.del("framework");
        
    System.out.println(jedis.lrange("framework", 0, -1));    //返回值为 [] 因为没有数据
        
    /*  Redis Lpush 命令将一个或多个值插入到列表头部。
     *  如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
     *  当 key 存在但不是列表类型时,返回一个错误。
     */
    
    // 先向key framework中存放三条数据
    jedis.lpush("framework", "angular");
    jedis.lpush("framework", "vue");
    jedis.lpush("framework", "react");
        
    // 再取出所有数据jedis.lrange是按范围取出,
    // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
    System.out.println(jedis.lrange("framework", 0, -1));

    /*
     * Redis RPUSH命令插入所有指定的值,在存储在列表的key尾部。
     * 如果键不存在,则执行压栈操作之前创建的空列表。
     * 当key持有的值不是列表,则返回一个错误。
     */
    jedis.del("framework");
    jedis.rpush("framework", "angular");
    jedis.rpush("framework", "vue");
    jedis.rpush("framework", "react");
    System.out.println(jedis.lrange("framework", 0, -1));
}

3.2 执行结果

clipboard.png

3.3 redis-cli 中查看

clipboard.png

结合Java基础知识整理之操作Redis(二)中的源码

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

import redis.clients.jedis.Jedis;

public class RedisStudy {

    //声明 redis 对象
    private static Jedis jedis;

    private String host = "127.0.0.1";    //测试地址
    private int port = 6379;    //端口
    private String pwd = "foobared";    //密码
    
    /**
     * 连接redis
     */
    public void getJedis() {
        try {
            jedis = new Jedis(host, port); // 连接redis服务器
            String auth = jedis.auth(pwd); // 权限认证
            
            System.out.println("connet the redis:"+auth);
        } catch (Exception e) {
            System.out.println("缓存链接错误");
        }
    }
    
    /**
     * 清除所有的缓存
     */
    public void ClearDB() {
        String str = jedis.flushDB();
        System.out.println("flush all Keys:" + str);
    }
    
    /**
     * 找到所有的KEY
     */
    public void findAllKeys(){
        Set<String> set = jedis.keys("*");
        for (String str : set) {
              System.out.println(str);
        }
    }
    
    /**
     * 操作String
     * 添加数据 使用 set
     * 拼接指定 key 使用 append
     * 删除指定的key 使用 del
     * 对指定的 key 加 1操作 使用 incr
     */
    public void stringOperator(){
        //添加数据
        jedis.set("name", "Wayfreem");// 添加一个 key 为 name, 然后 value 为 Wayfreem 
        System.out.println(jedis.get("name"));// 执行结果:xinxin
    
         //拼接指定的key
        jedis.append("name", " is my name");    //在 name 值的后继续追加 字符串    
        System.out.println(jedis.get("name"));
    
        // 删除某个键
        jedis.del("name");
        System.out.println("删除name 键之后:" + jedis.get("name"));
    
        jedis.mset("name", "Wayfreem", "age", "23", "qq", "5234XXXX"); // 设置多个键值对
        //进行加1操作
        jedis.incr("age"); 
        System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-"+ jedis.get("qq"));
    }
    
    /**
     * 操作 Map redis 上面叫做 hash
     * 添加数据 使用 hmset
     * 获取数据 使用 hmget
     * 判断key 对应的个数 使用 hlen
     * 判断key 是否存在 使用 exists
     * 获取 map 中所有的 key 使用 hkeys
     * 获取 map 中所有的 key的 value 使用 hvals
     */
    public void mapOperator(){
        //添加数据
        Map<String, String> map = new HashMap<String, String>();
        map.put("name", "Wayfreem");
        map.put("age", "23");
        map.put("qq", "5234XXXX");
        
        //添加一个 user 的 key, value 为 map 
        jedis.hmset("user", map);
        
        //获取对应key下的value,用数组返回
        List<String> rsmap = jedis.hmget("user", "name", "age", "qq");
        System.out.println(rsmap);
        
        // 删除map中的某个键值, 第一个参数是 map(现在的user),第二个参数是 map 中的 key
        jedis.hdel("user","age");
        
        System.out.println(jedis.hmget("user","age"));             // 删除了,返回null
        System.out.println(jedis.hlen("user"));             // 返回key为user的键中存放的值的个数2
        System.out.println(jedis.exists("user"));            // 是否存在key为user的记录 返回true
        System.out.println(jedis.hkeys("user"));            // 返回map对象中的所有key
        System.out.println(jedis.hvals("user"));            // 返回map对象中的所有value

        //循环出所有的key user下面的所有的 K-V
        Iterator<String> iter = jedis.hkeys("user").iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            System.out.println(key + ":" + jedis.hmget("user", key));
        }
    }
    
    
    /**
     * list操作
     * 添加数据 使用 lpush 或者 rpush
     * 获取数据 使用 lrange 是按照一定的范围获取
     */
    public void listOperator() {
        //删除指定的key
        jedis.del("framework");
        
        System.out.println(jedis.lrange("framework", 0, -1));    //返回值为 [] 因为没有数据
        
        /*    Redis Lpush 命令将一个或多个值插入到列表头部。
         *  如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
         *  当 key 存在但不是列表类型时,返回一个错误。
         */
        // 先向key framework中存放三条数据
        jedis.lpush("framework", "angular");
        jedis.lpush("framework", "vue");
        jedis.lpush("framework", "react");
        
        // 再取出所有数据jedis.lrange是按范围取出,
        // 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
        System.out.println(jedis.lrange("framework", 0, -1));

        /*
         * Redis RPUSH命令插入所有指定的值,在存储在列表的key尾部。
         * 如果键不存在,则执行压栈操作之前创建的空列表。
         * 当key持有的值不是列表,则返回一个错误。
         */
        jedis.del("framework");
        jedis.rpush("framework", "angular");
        jedis.rpush("framework", "vue");
        jedis.rpush("framework", "react");
        System.out.println(jedis.lrange("framework", 0, -1));
    }
    
    public static void main(String[] args) {
        //声明当前类
        RedisStudy rs = new RedisStudy();
        rs.getJedis();
        
        rs.listOperator();
    }
}

Rdies 教程的中文网:http://www.redis.net.cn/tutor...

Rdies 官网:https://redis.io/

Java基础知识整理之操作Redis(一)
Java基础知识整理之操作Redis(二)


Wayfreem
241 声望33 粉丝

一个后端工程师,偏偏喜欢前端。