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最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础.字符串类型实际上可 ...
随机推荐
- task1-9
今天完成: Task1.参考修真院线下报名贴(学习资料-线下报名-北京报名)中报名的格式,整理出业务模型,确定需要几个对象,每个对象的属性是什么,对象和对象之间的关系是一对一,还是一对多. [参考资料 ...
- Boxes and Candies(贪心)
Boxes and Candies Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement Ther ...
- vscode 和 atom 全局安装和配置 eslint 像 webstorm 等 ide 一样使用 standard标准 来检查项目
首先你要安装了 nodejs ,然后在终端命令行输入下面的这堆 npm install eslint eslint-plugin-standard eslint-config-standard esl ...
- EasyDSS流媒体服务器灵活地帮助用户实现摄像机RTSP转RTMP直播功能
简要描述 今天突然接到国内某上市公司同事打来的技术咨询电话,经过简单的沟通,大概所描述的需求是: 1.目前现场有非常多的摄像机资源需要接入: 2.需要将摄像机的RTSP流转成RTMP流接入到微信小程序 ...
- 牛人blog汇总
1.天一思维: https://blog.csdn.net/tszty1997?t=1
- Apache Shiro 使用手册(四)Realm 实现(转发:http://kdboy.iteye.com/blog/1169631)
在认证.授权内部实现机制中都有提到,最终处理都将交给Real进行处理.因为在Shiro中,最终是通过Realm来获取应用程序中的用户.角色及权限信息的.通常情况下,在Realm中会直接从我们的数据源中 ...
- Git——版本控制概论(一)
随着信息技术的发展,软件开发已不是小手工作坊,软件的规模和复杂度已经不再适合一个人单打独斗的开发了, 团队协作变得相当重要,如果没有VCS(版本控制系统Version Control System), ...
- 每天一个Linux命令(34)grep命令
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
- c的详细学习(5)数组
到目前为止,前面介绍的都是属于基本类型的数据.除此之外,C语言还提供了一些更为复杂的数据类型,称为构造类型.数组就是最基本的构造类型.若要针对一批数据进行某种操作,采用数组是一种方便可行的方法 ...
- 【leetcode刷题笔记】Valid Number
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...