Redis-2 数据类型使用

189 阅读3分钟

1. 5种数据类型使用

  • String
  • List
  • Hash
  • Set
  • 有序Set
Windows下安装:
下载解压后,启动服务端,使用java操作redis需要先启动服务器

下载java操作redis的jar包

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

1.1 验证代码

import redis.clients.jedis.Jedis;

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

public class RedisMain {
    private static Jedis jedis;

    static {
        // 连接服务器
        jedis = new Jedis("127.0.0.1", 6379);
        // 权限认证
        // jedis.auth("password");
    }

    public static void main(String[] args) {
        //testString();
        //testHash();
        //testList();
        //testSet();
        testSortedSet();
    }
}

1.2 字符串操作

// 字符串操作
public static void testString() {
    jedis.set("name1", "test1");
    System.out.println(jedis.get("name1"));
    // 追加操作
    jedis.append("name1", " test11");
    System.out.println(jedis.get("name1"));
    // 删除键
    Long result = jedis.del("name2");
    System.out.println(result); // 返回Long型  1表示成功 0失败
    // 设置多个键值对
    jedis.mset("age", "20", "addr", "hubei");
    // 获取多个键  返回一个列表类型  [test1 test11, 20, hubei]
    System.out.println(jedis.mget("name1", "age", "addr"));
}

1.3 哈希操作Hash

// 哈希操作Hash
public static void testHash() {
    Map<String, String> map = new HashMap<>();
    map.put("name", "test");
    map.put("age", "20");
    // 存储数据
    jedis.hmset("user", map);
    // 读取数据
    System.out.println(jedis.hmget("user", "name","age")); // [test, 20]
    //hkeys 获取所有哈希表中的字段
    System.out.println(jedis.hkeys("user")); // [name, age]
    //hvals 获取哈希表中所有值
    System.out.println(jedis.hvals("user")); // [test, 20]
    //HLEN key 获取哈希表中字段的数量
    System.out.println(jedis.hlen("user")); // 2
    // 获取所有的键  迭代操作
    Iterator<String> iter = jedis.hkeys("user").iterator();
    while(iter.hasNext()) {
        String key = iter.next();
        System.out.println(key+"--"+jedis.hmget("user", key)); // name--[test] age--[20]
    }
}

1.4 List操作

// List操作
public static void testList() {
    // 开始前,先移除所有的内容
    jedis.del("Programming language");
    // lpush key value1 [value2] 将一个或多个值插入到列表头部
    jedis.lpush("Programming language", "Java");
    jedis.lpush("Programming language", "Python");
    jedis.lpush("Programming language", "C++");
    // lrange 获取数据  返回一个list [Python, Java]
    // 第一个是key,第二个是起始位置,第三个是结束位置
    // 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。
    // 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
    System.out.println(jedis.lrange("Programming language",  0, -1)); // [C++, Python, Java]

    // lpushx key value 将一个值插入到已存在的列表头部
    jedis.lpushx("Programming language", "php");
    System.out.println(jedis.lrange("Programming language",  0, -1)); // [php, C++, Python, Java]

    // rpush key value1 [value2] 在列表中添加一个或多个值
    jedis.rpush("Programming language", "C", "C#");
    System.out.println(jedis.lrange("Programming language",  0, -1)); // [php, C++, Python, Java, C, C#]
}

1.5 Set操作

// Set操作
public static void testSet() {
    // sadd 向集合添加一个或多个成员
    jedis.sadd("webSite", "阿里巴巴","网易");
    jedis.sadd("webSite", "腾讯");
    // scard key 获取集合的成员数
    System.out.println(jedis.scard("webSite")); // 3

    // smembers key 返回集合中的所有成员  返回类型列表[阿里巴巴, 腾讯, 网易]注意顺序不唯一
    System.out.println(jedis.smembers("webSite")); // [阿里巴巴, 腾讯, 网易]

    // sscan key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
    System.out.println(jedis.sscan("webSite", "0")); // redis.clients.jedis.ScanResult@4f3f5b24
}

1.6 sorted set有序Set

// sorted set有序Set
public static void testSortedSet() {
    // Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员
    // 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序.
    // 有序集合的成员是唯一的,但分数(score)却可以重复.
    jedis.zadd("city", 0, "北京");
    jedis.zadd("city", 1, "上海");
    jedis.zadd("city", 2, "杭州");

    // zcard key 获取有序集合的成员数
    System.out.println(jedis.zcard("city")); // 3
    // zrevrangeByScore key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
    // java中的方法是zrevrangeByScore
    System.out.println(jedis.zrevrangeByScore("city", 5, 0)); // [杭州, 上海, 北京]
}