专栏首页老男孩成长之路Redis的五种数据类型及应用场景
原创

Redis的五种数据类型及应用场景

前言

redis是用键值对的形式来保存数据,键类型只能是String,但是值类型可以有String、List、Hash、Set、Sorted Set五种,来满足不同场景的特定需求。

本博客中的示例不是将控制台作为redis的一个客户端,而是将redis运用在java里进行测试

需要有java redis的驱动包,可以通过引入maven的依赖即可

        <dependency>
            <groupId>org.rarefiedredis.redis</groupId>
            <artifactId>redis-java</artifactId>
            <version>0.0.17</version>
        </dependency>

String

String类型是最基础的一种key-value存储形式,value其实不仅仅可以是String,也可以是数值类型。常常用来做计数器这类自增自减的功能,可用在粉丝数、微博数等。

示例

//连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
        //String实例
        jedis.set("hello", String.valueOf(1));
        jedis.incr("hello");
        jedis.set("hello1","word1");
        System.out.println(jedis.get("hello"));
        System.out.println(jedis.mget("hello","hello1"));

常用命令

  • set
  • get
  • mget
  • incr
  • decr

List

list就是链表,在redis实现为一个双向链表,可以从两边插入、删除数据。应用场景可以有微博的关注列表、粉丝列表、消息列表等。

有一个lrange函数,可以从某个元素开始读取多少个元素,可用来实现分页功能。

示例

/*list实例,双向链表结构,适合做消息队列,
        但其实真正应用中一般都会用专门做消息队列的中间件例如RabbitMQ*/
        jedis.lpush("201宿舍","hlf");
        jedis.lpush("201宿舍","css");
        jedis.lpush("201宿舍","ty");
        jedis.lpush("201宿舍","jy");
        List<String> name = jedis.lrange("201宿舍",0,3);
        for (String person:name
             ) {
            System.out.print(person+" ");
        }

常用命令

  • lpush
  • rpush
  • lpush
  • lpop
  • lrange

Hash

hash就是值类型存储的是一个键值对形式,适合存储对象类型信息,例如个人信息、商品信息等。

示例

//hash实例,适合存储对象
        HashMap<String,String> map = new HashMap<String, String>();
        map.put("name","hlf");
        map.put("sex","女");
        map.put("age","21");
        jedis.hmset("hlf",map);
        jedis.hset("hlf","major","software");
        Map<String,String> map1 = jedis.hgetAll("hlf");
        String age = jedis.hget("hlf","age");
        System.out.println(map1);
        System.out.println(age);

常用命令

  • hset
  • hmset
  • hget
  • hgetAll

Set

set表示存储的一个元素不重合的集合,因为set集合支持查缉、并集操作,因此适合做共同好友等功能

示例

//set实例
        jedis.sadd("set","hhh");
        jedis.sadd("set","ff");
        jedis.sadd("set","hhh");
        System.out.println(jedis.smembers("set"));
        jedis.sadd("set1","oo");
        jedis.sadd("set1","ff");
        System.out.println("交集:"+jedis.sinter("set","set1"));
        System.out.println("合集:"+jedis.sunion("set","set1"));

常用命令

  • sadd
  • spop
  • smembers
  • sunion
  • sinter

Sorted Set

相对于Set,Sorted Set多了一个Score作为权重,使集合里面的元素可以按照score排序,注意它是Set,所以它里面的元素也不能重复

示例

//sorted set实例
        jedis.zadd("set2",4,"redis");
        jedis.zadd("set2",3,"mysql");
        jedis.zadd("set2",2,"kk");
        jedis.zadd("set2",1,"redis");
        System.out.println(jedis.zrangeByScore("set2",0,4));

常用命令

  • zadd
  • zpop
  • zrangeByScore

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文搞懂MySQL的Join,聊一聊秒杀架构设计

    其实对于上面的观点一定程度上是正确的,但不是完全正确。但之所以流传这么广,主要还是没有搞清楚实际状态,而根据实际使用中总结出来的一些模糊规律。只有了解的MySQ...

    Java_老男孩
  • 数据库事务系列-MySQL跨行事务模型

    说来和MySQL倒是有缘,毕业的第一份工作就被分配到了RDS团队,主要负责把MySQL弄到云上做成数据库服务。虽说整天和MySQL打交道,但说实话那段时间并没有...

    Java_老男孩
  • 分布式之redis的三大衍生数据结构

    说起redis的数据结构,大家可能对五大基础数据类型比较熟悉:String,Hash,List,Set,Sorted Set。那么除此之外,还有三大衍生数据结构...

    Java_老男孩
  • 解读 | 计算机编程的 20 年变迁!

    技术在更迭,科技在变化。20 年前,或许只是处于概念型的技术,如今早已深入落地我们的日常生活中,而从计算机编程角度来看,在互联网发展的 20 年间,究竟有哪些根...

    CDA数据分析师
  • python基础知识——内置数据结构(字典)

        字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。

    zhaozhiyong
  • 【产品经理大会实录】5亿红包怎么发? ——谈摇一摇红包的产品方案

    编 者按:5月10日,人人都是产品经理社区与腾讯大讲堂联手举办的《2015中国产品经理大会全国巡回-广州站》活动已圆满结束,讲堂君整理了当天分享精华,便于大家学...

    腾讯大讲堂
  • python基础知识——内置数据结构(字典)

        字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。 1、字典的创建 格式 dicti...

    zhaozhiyong
  • PHP301跳转代码

    Huramkin
  • Excel VBA解读(160): 数据结构—字典对象的基本操作(续)

    Set dict = CreateObject("Scripting.Dictionary")

    fanjy
  • MyBatis踩坑之SQLProvider转义字符被删除问题

    使用MyBatis作为ORM框架,jdbc驱动使用的是mariadb-java-client。

    2Simple

扫码关注云+社区

领取腾讯云代金券