前言

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. Sumdiv(较难数学题)

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 20971   Accepted: 5290 Description Cons ...

  2. mac上好用的软件

    1 newfile menu for Mac 右键创建文件.

  3. This instability is a fundamental problem for gradient-based learning in deep neural networks. vanishing exploding gradient problem

    The unstable gradient problem: The fundamental problem here isn't so much the vanishing gradient pro ...

  4. Jquery的parent和parents(找到某一特定的祖先元素)用法(转发:https://blog.csdn.net/cui_angel/article/details/7903704)

    <!-- parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合. parents则是取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素).可以通过一个可选的表达式进行筛选. ...

  5. mysql 修改表名的方法:sql语句

    在使用mysql时,经常遇到表名不符合规范或标准,但是表里已经有大量的数据了,如何保留数据,只更改表名呢? 可以通过建一个相同的表结构的表,把原来的数据导入到新表中,但是这样视乎很麻烦. 能否简单使用 ...

  6. VMware下所有的系统网卡启动不起来

    昨天新装了一台Linux,装好之后网络起不来,搞了半天也没弄好,总是报错: Failed to start LSB: Bring up/down networking.... 我以为是我的设置出了问题 ...

  7. 说说JavaScript 中的new吧

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

  8. centos 6.5 编译安装了 Nginx1.6.0+MySQL5.6.19+PHP5.5.14

    centos 6.5 编译安装了 Nginx1.6.0+MySQL5.6.19+PHP5.5.14--------------------------------------------------- ...

  9. C#转换人民币大写金额

    /// <summary> /// 转换人民币大写金额. /// </summary> public class RMBConverter { /// <summary& ...

  10. [原创]Scala学习:编写Scala脚本

    scala支持脚本 1)在/opt/scala-script下创建一个文件hello.scala 编辑内容如下: $ hello ,this is the first scala script 2)运 ...