全网最全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光是轮子多.市场占有率 ...
随机推荐
- docker安装Sentinel
1.拉取镜像 docker pull bladex/sentinel-dashboard:latest 2.运行 docker run --name sentinel --restart=always ...
- NC20012 [HEOI2014]南园满地堆轻絮
NC20012 [HEOI2014]南园满地堆轻絮 题目 题目描述 小 Z 是 ZRP(Zombies' Republic of Poetry,僵尸诗歌共和国)的一名诗歌爱好者,最近他研究起了诗词音律 ...
- netty系列之:kequeue传输协议详解
目录 简介 KQueueEventLoopGroup KQueueEventLoop KQueueServerSocketChannel和KQueueSocketChannel 总结 简介 在前面的章 ...
- ConcurrentHashMap树化链表treeifyBin
private final void treeifyBin(Node<K,V>[] tab, int index) { Node<K,V> b; int n, sc; if ( ...
- day01--MarkDown语法格式
MarkDown语法格式 标题 一级标题 一级标题: 井号+空格+标题名字 二级标题 二级标题: 双井号+空格+标题名字 三级标题 三级标题: 三井号+空格+标题名字 ......... 字体 斜体( ...
- VMware Workstation是可以跟hyper-v 共存的!
VMware Workstation是可以跟hyper-v 共存的! 神奇的事情 之前一直不知道这个事情,后来发现,原来是可以的,震惊了我的双眼. 我之前一直用的是桌面的Docker Desktop ...
- FnOnce,FnMut和Fn
继承结构 FnOnce FnMut: FnOnce Fn: FnMut FnOnce就是说会转移闭包捕获变量的所有权,在闭包前加上move关键字可以限定此闭包为FnOnce move关键字是强制让环境 ...
- 2535-springsecurity系列--关于授权角色“ROLE”前缀的问题
版本信息 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...
- YII的lazy loading
版本1 require('class\class1.php'); require('class\class1.php'); if($is_girl){ echo 'this is a girl'; $ ...
- 在Centos7上将Apache(httpd)切换为Nginx的过程记录
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_129 近期要上线几个基于tornado+motor的移动端接口服务,众所周知,Apache和tornado天生八字不合,尤其apa ...