zoukankan      html  css  js  c++  java
  • 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,也可以是数值类型。常常用来做计数器这类自增自减的功能,可用在粉丝数、微博数等。

    示例

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

    常用命令

    • set
    • get
    • mget
    • incr
    • decr

    List

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

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

    示例

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

    常用命令

    •  lpush
    • rpush
    • lpush
    • lpop
    • lrange

    Hash

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

    示例

     1         //hash实例,适合存储对象
     2         HashMap<String,String> map = new HashMap<String, String>();
     3         map.put("name","hlf");
     4         map.put("sex","女");
     5         map.put("age","21");
     6         jedis.hmset("hlf",map);
     7         jedis.hset("hlf","major","software");
     8         Map<String,String> map1 = jedis.hgetAll("hlf");
     9         String age = jedis.hget("hlf","age");
    10         System.out.println(map1);
    11         System.out.println(age);

    常用命令

    • hset
    • hmset
    • hget
    • hgetAll

    Set

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

    示例

    1         //set实例
    2         jedis.sadd("set","hhh");
    3         jedis.sadd("set","ff");
    4         jedis.sadd("set","hhh");
    5         System.out.println(jedis.smembers("set"));
    6         jedis.sadd("set1","oo");
    7         jedis.sadd("set1","ff");
    8         System.out.println("交集:"+jedis.sinter("set","set1"));
    9         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
  • 相关阅读:
    Ubuntu下UFW防火墙简单设置
    ubuntu设置tomcat开机自动启动
    ubuntu16.04编辑器vi的使用
    Several ports (8005, 8080, 8009) required
    JavaScript检测浏览器(Firefox、IE)是否安装指定插件
    mongo 初级使用
    @Scheduled(cron = "0 0 * * * ?")实现定时任务
    Calendar时间类型数据设置
    Maven+STS工程中Maven Dependencies 文件夹丢失问题
    redis安装以及远程连接
  • 原文地址:https://www.cnblogs.com/huanglf714/p/11082992.html
Copyright © 2011-2022 走看看