前言

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

redis的五种数据类型及应用场景的更多相关文章

  1. Redis: Redis支持五种数据类型

    ylbtech-Redis: Redis支持五种数据类型 Redis支持五种数据类型:string(字符串) ,hash(哈希),list(列表),set(集合)及zset(sorted set:有序 ...

  2. redis五种数据类型的使用场景

    string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

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

    MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加 ...

  4. 【快速掌握】Redis 的五种数据类型

    不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...

  5. redis 五种数据类型的使用场景

    String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  6. [转]redis 五种数据类型的使用场景

    FROM : http://blog.csdn.net/gaogaoshan/article/details/41039581#t5 String 1.String 常用命令: 除了get.set.i ...

  7. Redis学习笔记--五种数据类型的使用场景

    String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  8. Redis的五种数据类型的简单介绍和使用

    1.准备工作: 1.1在Linux下安装Redis  https://www.cnblogs.com/dddyyy/p/9763098.html 1.2启动Redis 先把root/redis的red ...

  9. [redis]redis五种数据类型和应用场景

    一.String(字符串)字符串类型是redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础.字符串类型实际上可 ...

随机推荐

  1. iOS Base64加密

    1.Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0 ...

  2. 【题解】国家集训队礼物(Lucas定理)

    [国家集训队]礼物(扩展Lucas定理) 传送门可以直接戳标题 172.40.23.20 24 .1 答案就是一个式子: \[ {n\choose \Sigma_{i=1}^m w}\times\pr ...

  3. Dajngo admin使用

    Dajngo admin使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INS ...

  4. 第一个Spring Boot程序启动报错了

    创建完成第一个Spring Boot项目后,准备运行,尝一下胜利的果实. 启动日志如下 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ...

  5. Javaweb基础--->过滤器filter(转发)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  6. 使用阿里云的PyPI源

    方法1:(1)创建pip.conf文件 (2).编辑如下内容 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] ...

  7. cloudera impala编译 安装 配置 启动

    无论是采用GDB调试impala或者尝试修改impala源码,前提都是需要本地环境编译impala,这篇文章详细的分享一下impala编译方法以及编译过程遇到的棘手的问题: 前言: impala官方的 ...

  8. 说说JavaScript 中的new吧

    在其他语言中,new操作符都是用来实例化创建一个对象的,JavaScript 中同样如此,但是它又有一些不同.为了说清楚这个问题我们先来看一下JavaScript 中的类.原型.原型链.继承这些概念吧 ...

  9. Data Structure Array: Given an array arr[], find the maximum j – i such that arr[j] > arr[i]

    http://www.geeksforgeeks.org/given-an-array-arr-find-the-maximum-j-i-such-that-arrj-arri/ #include & ...

  10. web框架详解之tornado 三 url和分页

    一.代码目录构建 controllers  :处理业务逻辑的 account:处理账户相关的 上面目录作用和内容 controllers 包 :处理业务逻辑的 account:处理账户相关的 home ...