Redis 常用的数据类型+命令

89 阅读3分钟

学习一个新技术的流程是什么,应该是先写一个特别简单的栗子,然后不断的向上添加,从小到大,可是现在,要学的东西太多,比如去面试,发现这个不会,那个也不清楚,于是就怀着比较着急的心态去学习,其实除了面试,很多时候都会这样,学习的时候不再写hello world,而是直接就看理论,被理论,猜逻辑,那一定会事倍功半。

下面讲讲redis

说起redis其实很好笑的,我曾经通过redis视频学习过redis,看了大概两个小时,讲师都在将怎么去安装redis,怎么去设置主从机制,到头来,redis没学怎么明白,到时学会了点linux命令,也挺好倒是学会了一些,但是很可气,连java连接redis操作的Jedis操作最基本的数据类型的代码都没写。

现在就从写代码开始

redis的数据结构分为String List Map Set Zset 五种

分别介绍一下

1 String

string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

2 List

它是一个字符串链表,left、right都可以插入添加;

如果键不存在,创建新的链表;

如果键已存在,新增内容;

如果值全移除,对应的键也就消失了。

链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

3Set

Redis的Set是string类型的无序,不能重复的集合。

4 hash

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

5 zset

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。

redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

栗子

public static void main(String[] args) {
    Jedis jedis = null;
    try {
        jedis = new Jedis("127.0.0.1", 6699);
        jedis.auth("123123");

    // 1.string 输出结果: OK
    jedis.set("hello", "world");
    //  输出结果: world
    jedis.get("hello");

    // 2.hash
    jedis.hset("myhash", "f1", "v1");
    jedis.hset("myhash", "f2", "v2");
    //  输出结果: {f1=v1, f2=v2}  这里是保存了一个Map
    Map<String, String> myhash = jedis.hgetAll("myhash");
    System.out.println(myhash);

    // 3.list
    jedis.rpush("mylist", "1");
    jedis.rpush("mylist", "2");
    jedis.rpush("mylist", "3");
    //  输出结果: [1, 2, 3] 如果end为 -1 会输出两便
    List<String> mylist = jedis.lrange("mylist", 0, 2);
    System.out.println(mylist);

    // 4.set
    jedis.sadd("myset", "a");
    jedis.sadd("myset", "b");
    jedis.sadd("myset", "a");
    //  输出结果: [b, a]
    jedis.smembers("myset");

    // 5.zset
    jedis.zadd("myzset", 99, "tom");
    jedis.zadd("myzset", 66, "peter");
    jedis.zadd("myzset", 33, "james");
    //  输出结果: [[["james"],33.0], [["peter"],66.0], [["tom"],99.0]]
    Set<Tuple> myzset = jedis.zrangeWithScores("myzset", 0, -1);


}catch (Exception e){

}finally {
    jedis.close();
}
}

以上就是redis基本类型的使用

下面说说redis的几个命令

1 计数命令 incr

这个命令对key进行计数如果原来没有那么就变成1,执行一次后变成2

2 加锁命令 setNx

这个命令返回的其实就是如果有key不存在,那么将value设置为传入的value,如果存在那么不进行操作。