全网最全Redis学习
一.Redis简介
Redis是以Key-Value形式进行存储的NoSQL数据库,C语言进行编写的。平时操作的数据都在内存中,效率特高,读的效率110000/s,写81000/s,所以多把Redis当做缓存工具使用。同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
对于上述提到的NoSQL数据库,常见NoSQL数据库:memcached :键值对,内存型数据库,所有数据都在内存中。Redis:和Memcached类似,还具备持久化能力。HBase:以列作为存储。MongoDB:以Document做存储。
二、Redis常用五大类型
Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储,它还支持数据的备份,即master-slave模式的数据备份,同样Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。Redis支持的五大数据类型包括String(字符串 用法: 键 值),Hash(哈希 类似Java中的 map 用法: 键 键值对),List(列表 用法:键 集合 不可以重复),Set(集合 用法:键 集合 可以重复),Zset(sorted set 有序集合 用法: 键 值 值)
三、Redis常用命令
可参考https://www.redis.net.cn/order/
四、Redis不仅是内存型数据库,还有持久化能力,持久化策略有两种:RDB、AOF。
rdb文件是一个紧凑文件,直接使用rdb文件就可以还原数据。数据保存会由一个子进程进行保存,不影响父进程。恢复数据的效率要高于aof。缺点就是:每次保存点之间导致redis不可意料的关闭,可能会丢失数据。由于每次保存数据都需要fork()子进程,在数据量比较大时可能会比较耗费性能。
AOF默认是关闭的,需要在配置文件中开启AOF。Redis支持AOF和RDB同时生效,如果同时存在,AOF优先级高于RDB(Redis重新启动时会使用AOF进行数据恢复)。监听执行的命令,如果发现执行了修改数据的操作,同时直接同步到数据库文件中。相对RDB数据更加安全。缺点:相同数据集AOF要大于RDB。相对RDB可能会慢一些。可以通过修改redis.conf,可将appendonly修改为yes,appendfilename "appendonly.aof"。
五、Redis主从复制
支持集群功能,为保证单一节点可用性,支持主从复制功能。每个节点有N个复制品,其中一个复制品是主,另外N-1 复制品是从,即支持一主多从:一个主可有多个从,而一个从又可以看成主,它还可以有多个从。优点是:(1)增加单一节点健壮性,提升整个集群稳定性。(Redis中当超过1/2节点不可用时,整个集群不可用)。(2)从节点可以对主节点数据备份,提升容灾能力。读写分离。(3)在redis主从中,主节点一般用作写(具备读的能力),从节点只能读,利用这个特性实现读写分离,写用主,读用从。
一主多从搭建:
- 新建目录:madir /usr/local/replica
- 复制目录:把之前安装redis单机中的bin目录复制一下,cp -r /usr/local/redis/bin /usr/local/replica/master\ cp -r /usr/local/redis/bin /usr/local/replica/slave1
cp -r /usr/local/redis/bin /usr/local/replica/slavel2 - 修改从的配置文件 。修改两个从的redis.conf,制定主节点ip和端口,并修改自身端口号防止和其他redis冲突。vim /usr/local/replica/slavel/redis.conf * 指定主节点ip和端口号 replicaof ip.port
- 修改完之后,启动redis实例:cd /usr/local/replica vim startup.sh在文件添加三个redis实例:如: ./redis-server redis.conf;赋予权限:chmod a+x startup.sh;开启:./startup.sh; 查看启动状态:ps -ef|grep redis;测试一下:cd /usr/local/replica/master/; ./redis-cli;在进入到slave查看数据是否同步。cd /usr/local/replica/slavel; ./redis -cli -p 6380
六、哨兵
用于控制上述的主从,当主宕机,节点不具备写能力,让一个从变成主,使整个节点继续工作,Redis哨兵就是帮助控制整个节点,干这个事情的。Redis支持但哨兵和多哨兵,单哨兵只要哨兵发现master宕机,直接选取一个master;多哨兵是根据人为设定,当达到一定数量哨兵才认为master宕机,在进行重新选主。
七、集群
当集群中超过或等于1/2节点不可用时,整个集群不可用。为了搭建稳定集群,都采用奇数节点。建立集群时,需要借助ruby脚本实现集群,在redis5中可以使用自带的redis-cli实现集群功能。集群测试的命令:./redis-cli -p port -c。
八、Jedis
Redis给java语言提供客户端API,称之为Jedis。Jedis API特别简单,基本都是创建对象调用方法。
单机版
点击查看代码
public void testStandalone(){
Jedis jedis = new Jedis("ip",port);
jedis.set("name","m-standalone");
String value = jedis.get("name");
System.out.println(value);
}
带有连接池
点击查看代码
public void testPool(){
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(20);
jedisPoolConfig.setMaxIdle(5);
jedisPoolConfig.setMinIdle(3);
JedisPool jedisPool = new JedisPool(jedisPoolConfig,"ip",port);
Jedis jedis = jedisPool.getResource();
jedis.set("name","my-pool");
String value = jedis.get("name");
System.out.println(value);
}
九、springboot整合Redis
十、Redis作为缓存使用
全网最全Redis学习的更多相关文章
- (zhuan) 深度学习全网最全学习资料汇总之模型介绍篇
This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058& ...
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- 全网最全ASP.NET MVC 教程汇总
全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MV ...
- Redis 学习笔记4: Redis 3.2.1 集群搭建
在CenOS 6.7 linux环境下搭建Redis 集群环境 1.下载最新的Redis版本 本人下载的Redis版本是3.2.1版本,下载之后,解压,编译(make): 具体操作可以参考我的博文:R ...
- Redis学习笔记(3)——Redis的命令大全
Redis是一种nosql数据库,常被称作数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted se ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装爬虫框架Scrapy(离线方式和在线方式)(图文详解)
不多说,直接上干货! 参考博客 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解) 第一步:首先,提示升级下pip 第二步 ...
- 全网最全的Windows下Anaconda2 / Anaconda3里正确下载安装OpenCV(离线方式和在线方式)(图文详解)
不多说,直接上干货! 说明: Anaconda2-5.0.0-Windows-x86_64.exe安装下来,默认的Python2.7 Anaconda3-4.2.0-Windows-x86_64.ex ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)
自学MVC看这里——全网最全ASP.NET MVC 教程汇总 MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...
- 超全PHP学习资源整理:入门到进阶系列
PHP是少数几门在语言层面饱受诟病,但在实际开发和应用上却又让人无法撒手的语言之一.就好比路边摊小吃,一遍骂人家不卫生,一遍却又说:真香.所谓接地气,不外如此,大道理不说,PHP光是轮子多.市场占有率 ...
随机推荐
- 基于mysql实现group by取各分组最新一条数据
准备数据 SQL语句 SELECT * FROM admin WHERE id IN ( SELECT MAX( id ) FROM admin GROUP BY order_id ); 查询结果:
- input标签的事件之oninput事件
最近在写前端的时候,用到了oninput事件.(其中也涉及了onclick) 问题:鼠标点击数字和运算符的时候,文本框里的内容到达一定长度时,会出现无法继续往后面跟随光标的问题. 解决:见下面代码 这 ...
- Unsupervised Person Re-identification by Soft Multilabel Learning
简介: 这是一篇19年CVPR的跨域无监督Re-ID论文,在Market1501和DukeMTMC-reID上分别达到了67.7%和67.1%的rank-1精度,算是一篇将准确度刷得比较高的论文了,在 ...
- Python 数据科学手册:读书笔记概论
为防止遗忘,在空闲时间将读书的笔记开始按照章节进行概括总结(2022.1.1): 第二章:NumPy 入门 第三章:Pandas 数据处理 第四章:Matplotlib 数据可视化 第五章:机器学习 ...
- JDBC:批处理
1.批处理: 当要执行某条SQL语句很多次时.例如,批量添加数据:使用批处理的效率要高的多. 2.如何实现批处理 实践: package com.dgd.test; import java.io.Fi ...
- 一款 IDEA 插件帮你优雅转化 DTO、VO、BO、PO、DO
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.承认你优秀很难 很多码农,把路走窄了 捧一个,喷一个,很多码农都不会多一点思路看问题,总是 ...
- PE格式: 分析IatHook并实现
Ring 3层的 IAT HOOK 和 EAT HOOK 其原理是通过替换IAT表中函数的原始地址从而实现Hook的,与普通的 InlineHook 不太一样 IAT Hook 需要充分理解PE文件的 ...
- Linux系统上传公钥不生效问题
Authentication refused: bad ownership or modes for file /home/yanbo.xu/.ssh/authorized_keys 原因: sshd ...
- SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?
前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...
- Normal3类定义
法线的相关操作都在图中,实现部分还是大家自己练习,照着图写代码就行了. 类声明: class Normal3 { public: Normal3(); ~Normal3(); Normal3(ldou ...