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最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础.字符串类型实际上可 ...
随机推荐
- [转]为 windows cmd 设置代理
为 windows cmd 设置代理 转自:http://blog.csdn.net/lovelyelfpop/article/details/69586366 通过cmd命令行执行某些命令,如果这些 ...
- Wrapper配置详解及高级应用
将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂,甚至可以认为非常简单.但是实际项目应用过程中我们的程序一般较庞大,运行环境也较复杂. 通过Wrapper 配置文件 ...
- 九度OJ 1189:还是约瑟夫环 (约瑟夫环)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:820 解决:522 题目描述: 生成一个长度为21的数组,依次存入1到21: 建立一个长度为21的单向链表,将上述数组中的数字依次存入链表每 ...
- 5.设计模式----prototype原型模式
原型模式:做到是原型,那肯定是自己本身才是原型,原型模式属于对象的创建模式. 关于原型模式的实现方式分2种: (1)简单形式.(2)登记形式,这两种表现形式仅仅是原型模式的不同实现. package ...
- Moore-Penrose Matrix Inverse 摩尔-彭若斯广义逆 埃尔米特矩阵 Hermitian matrix
http://mathworld.wolfram.com/Moore-PenroseMatrixInverse.html 显然,埃尔米特矩阵主对角线上的元素都是实数的,其特征值也是实数.对于只包含实数 ...
- 几则js表达式
过滤大段文本里的标签.标签格式 <...>,如下匹配标签然后替换成空 校验邮箱是否符合: 去掉行首行尾空格: 检测字符串是否包含中文:(utf8编码)
- Android系统移植与调试之------->如何修改Android设备的默认休眠时间
1.找到~/mx0831-0525/frameworks/base/packages/SettingsProvider/res/values/ defaults.xml文件 2.修改默认休眠时间 3. ...
- Windows磁盘MBR结构详解
在之前的文章 Windows存储管理之磁盘结构详解 中介绍了Windows的磁盘结构和MBR.本文将对Windows Basic Disk中的MBR的结构进行介绍,帮助读者更好的了解Windows系统 ...
- STM32L0 HAL库 IO读写功能
开发环境使用 MDK5.16a + CUBEMX生成代码 开发板使用:NUCLEO-L053R8 核心芯片:STM32L053R8 今天主要学习了下最基础的IO的读写,IO使用 PA5 LED输出 ...
- 3.22课·········CSS样式表
CSS(Cascading Style Sheet,叠层样式表),作用是美化HTML网页. /*注释区域*/ 此为注释语法 一.样式表 (一)样式表的分类 1.内联样式表 和HTML联合显示,控 ...