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
redis的五种数据类型及应用场景的更多相关文章
- Redis: Redis支持五种数据类型
ylbtech-Redis: Redis支持五种数据类型 Redis支持五种数据类型:string(字符串) ,hash(哈希),list(列表),set(集合)及zset(sorted set:有序 ...
- redis五种数据类型的使用场景
string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- Redis五种数据类型及应用场景
MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加 ...
- 【快速掌握】Redis 的五种数据类型
不同于MySQL的表结构所带来的复杂语句,Redis只需要维护好它的[key-value]结构就可以,因此相比于MySQL,语句非常简单. 今天介绍一下Redis 五种常用的数据类型: 这五种数据类型 ...
- redis 五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- [转]redis 五种数据类型的使用场景
FROM : http://blog.csdn.net/gaogaoshan/article/details/41039581#t5 String 1.String 常用命令: 除了get.set.i ...
- Redis学习笔记--五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- Redis的五种数据类型的简单介绍和使用
1.准备工作: 1.1在Linux下安装Redis https://www.cnblogs.com/dddyyy/p/9763098.html 1.2启动Redis 先把root/redis的red ...
- [redis]redis五种数据类型和应用场景
一.String(字符串)字符串类型是redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础.字符串类型实际上可 ...
随机推荐
- Command 'java' not found during running appium
Question: When Execution code:driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hu ...
- 【BZOJ4894】天赋 有向图生成树计数
[BZOJ4894]天赋 Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的.也就是 ...
- vue路由vue-route
首先先引入插件 <script src="Vue.js"></script> //vue.js在前面 <script src="vue-ro ...
- $ php app/console fos:user:promote
$ php app/console fos:user:create Please choose a username:admin Please choose an email:admin21@dwq ...
- c的详细学习(2)数据类型,运算符与表达式
本节用来介绍c语言中的数据类型和运算符. (1)c语言的基本符号: 任何一种基本语言都有自己的基本词汇表.c语言的基本词汇表有一下几部分: *数字10个: *英文字母:大小 ...
- 数据库连接理解——JDBC
需求:数据库操作 数据是:用户信息 1.连接数据库 JDBC Hibernate 2.操作数据库 c create r read u update d delete 3.关闭数据库连接 interf ...
- P2455 [SDOI2006]线性方程组
P2455 [SDOI2006]线性方程组 真\(\cdot\)高斯消元模板题 由于各种hack数据被造出来~码量突增~,其实也就多了二三十行 将每行系数消到最多有一个非0数 特殊情况: 在过程同时 ...
- 第二篇 javascript一维数组和二维数组及方法
一.数组 什么是数组 程序=数据+算法 数组就是一种很常见的保存批量数据的数据结构 一.定义数组 var arr1=[]; //定义了一个不包含元素的数组 ,,]; //定义了一个包含三个元素的数组 ...
- hbase shell概述
hbase shell-general(常规指令):http://www.cnblogs.com/husky/p/6374867.html hbase shell-ddl(表定义指令):http:// ...
- poj 1328 Radar Installatio【贪心】
题目地址:http://poj.org/problem?id=1328 Sample Input 3 2 1 2 -3 1 2 1 1 2 0 2 0 0 Sample Output Case 1: ...