![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
Redis的相关知识
P_ning
一只小菜鸟的笔记
我的大部分笔记存放处在码云的仓库里面https://gitee.com/P_n_ing
有空的话我会把详细的步骤会写在这里
(当然是在我打完游戏后如果还有空闲的时间( ´◔ ‸◔`))
展开
-
集群的Jedis开发
这个和之前普通的redis其实差不多,因为主要还是整合在SpringBoot中使用,所以这里就简单写了一下,jar包博客自取package com.pning.study;import java.util.HashSet;import java.util.Set;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;public class ConnectRedis { public原创 2020-06-01 12:19:13 · 166 阅读 · 0 评论 -
Redis的集群
集群常用地方容量不够时,redis进行扩容并发操作时,redis进行分摊什么是redis的集群redis集群实现了redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储的总数据的1/N。Redis集群通过分区(partition)来提供一定程度的可用性(availability),即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。使用集群环境需求(安装ruby)yum install rubyyum install ruby原创 2020-05-31 22:43:34 · 120 阅读 · 0 评论 -
Redis的薪火相传,反客为主和哨兵模式
需了解redis的主从复制什么是薪火相传上一个slave(从服务器)可以是下一个slave的master(主服务器),slave同样可以接受其他的salve的连接和同步请求,那么该slave作为了链条中的下一个master,可以有效减轻master的写压力,去中心化减低风险。但是也产生了另一个风险:一旦某个slave出现意外停止运行后,以这台slave为主的其他slave都无法保存数据设置和普通的主从复制一样都是slaveof <ip> <port>,只不过主服务器不再是原创 2020-05-30 22:03:54 · 757 阅读 · 0 评论 -
Redis主从复制
什么是主从复制主从复制就是主机数据更新后根据相关配置和策略,自动同步到备用机器的master/slaver机制,Master以写为主,Slave以读为主原创 2020-05-30 20:44:44 · 125 阅读 · 0 评论 -
Redis两种持久化方法该使用哪个?
Redis的两种持久化介绍redis有两种持久化方式:RDB和AOF,RDB保存的是处理后的数据,AOF保存的是处理数据的指令。两种持久化哪个好官方推荐两个都启动如果对数据不敏感,可以单独使用RDB不建议单独使用AOF,因为如果出现bug的话会无法恢复如果只做纯粹的内存缓存时,两者都可以不用如果AOF与RDB同时开始以AOF为准...原创 2020-05-29 19:58:43 · 277 阅读 · 0 评论 -
Redis的持久化之AOF
Redis的两种持久化介绍redis有两种持久化方式:RDB和AOF,RDB保存的是处理后的数据,AOF保存的是处理数据的指令。AOF介绍以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读的操作不记录),只允许追加文件但不可以改写文件(实际上可以自己手动修改文件,但是如果失败会造成文件损坏)Redis启动之初就会读取该文件重新构造数据,也就是说如果Redis重启,那就根据备份的日志文件内容,将之前写的所有写操作从头到尾全部执行一遍,但也速度也因此要比RDB慢很多。如果觉得繁原创 2020-05-29 18:34:43 · 205 阅读 · 0 评论 -
Redis的持久化之RDB
Redis的两种持久化介绍redis有两种持久化方式:RDB和AOFRDB介绍在指定时间间隔内将内存中的数据集快照写入磁盘,也就是我们俗话讲的Snapshot快照,恢复时是将快照文件直接读到内存中。备份是如何执行的Redis会单独创建(fork)一个子进程来进行持久化,...原创 2020-05-28 22:00:27 · 269 阅读 · 0 评论 -
Redis事务的秒杀并发模拟
准备工具adCentos6默认安装Centos7手动安装安装命令yum install httpd-tools测试ad -n 请求数量 -c 并发数量 -p 指定请求数据文件 -T "application/x-www-form-urlencoded" 测试请求-p 指定请求数据文件:简单来说就是一个存放请求参数的文件的路径虽然这样可以测试高并发,但是注意这个要和事务与监视一起使用,否者会出现类似于卖东西时销量多余库存的事件。...原创 2020-05-28 09:32:09 · 214 阅读 · 0 评论 -
Redis的事务
简介NoSQL数据库不支持ACID特征,但也是有自己的事务的。(事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性)redis事务是一个单独的格里操作:事务中的所有命令都会序列化且按顺序的执行。事务之心的过程中,不会被其他客户端发过来的命令请求所打断。我个人更喜欢把事务看成一个批处理总结redis的事务的主要作用就是串联多个命令防止别的命令插队Multi,Exec,discard从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输原创 2020-05-21 21:21:06 · 290 阅读 · 0 评论 -
java连接Redis
package com.pning.study;import redis.clients.jedis.Jedis;public class ConnectRedis { public static void main(String[] args) { /* * 1:导入jar包Apache Commons Pool,我随便下载了一个最新版本的,gitee自取 * 2.我们在java写的是客户端,是需要执行redis指令的客户端,不是服务端 */ Jedis jedis = ne原创 2020-05-20 22:31:08 · 112 阅读 · 0 评论 -
Redis的一些相关配置
include 文件路径(导入特殊的配置文件)类似于jsp中的iclude,我们把经常需要修改或者特殊的部分提取出来,然后使用include来导入port 端口号(指定运行端口号)指定redis运行的端口bind ip地址(ip地址的绑定)在配置文件里,默认bind=127.0.0.1,也就是只接受本机访问如果没有写(默认的被删除且保护模式也被关闭关闭)的情况下,无限制接受任何ip地址的访问关闭保护模式的方法:在80行左右有一个protected-mode yes将yes改为no即可如果保原创 2020-05-20 20:27:55 · 323 阅读 · 0 评论 -
Redis利用zset实现一个文章访问量的排行版
案例数据下面这条指令记录了key为text的5个专栏的阅读量zadd text 1000 Java 100 Python 40 php 60 C 200 JQuery显示所有并且从小到大排序zrange text 0 -1根据所选范围从大到小排序zrevrangebyscore text 200 10原创 2020-05-20 17:46:34 · 895 阅读 · 0 评论 -
Redis存放对象的两种方式
数据格式用户id为查找的key存储的value用户对象包括姓名,年龄,生日等等如果用普通的key-value结构来存储,主要有以下2种方式存储方式一(list,set)这种方式是使用list或者set这些来存储的,这样的方式其实也可以达到我们想要的效果,但是因为每次修改属性都需要三步走,性能开销非常大。1.先反序列化;2,修改;3.序列化方式二这种方式其实也有两种写法写法一(list,set)这种写法不仅能够达成目标,而且解决了资源消耗过大的问题,但是也引起了另一个问题,就是用户的原创 2020-05-19 21:21:12 · 1824 阅读 · 0 评论 -
Redis的五大数据类型
注意这里只是介绍这五大数据类型的一些理论知识,他们的常见的指令在Redis的基础命令这里StringString是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,也就是一个key对应一个valueString类型是二进制安全的,也就是说Redis的String可以包含任何数据。比如JPG图片和序列化的兑现(Json类型)等等String是Redis最基本的数据类型,也是我们在日常中使用最多的类型,一个Redis的字符串value可以存储512M的数据,相当于半个G。原创 2020-05-17 21:41:53 · 114 阅读 · 0 评论 -
Redis的基础命令
keys *用于查询当前数据库的键(key)exists 判断某个键(key)是否存在,返回1(存在)或0(不存在)type 查看某个键(key)所对应的值的类型del 删除某个键,返回1(成功)或0(失败)expire 为某个键设置过期时间,单位为秒ttl 查看某个键剩余的时间或状态,返回-1表示永不过期,-2表示已过期,其他表示剩余时间dbsize查看当前数据库的key的数量Flushdb清空当前数据库Flushall清空所有数据库...原创 2020-05-17 17:44:38 · 146 阅读 · 0 评论 -
Redis安装的一些相关知识
端口6379如何而来当我们启动Redis的时候启动的是6379端口,为什么是6379呢?有种说法是6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字.antirez(作者)及其朋友把MERZ当作愚蠢的代名词,但这仅仅只是一种说法,实际上antirez的一篇博文中向大家解释为什么他选择6379作为默认端口号.这篇博文官方的解释了Redis的LRU机制之后,向大家解释了采用6379作为默认端口的原因.默认使用16个数据库16个数据库的编号类似于数组的下标一样原创 2020-05-17 17:05:42 · 128 阅读 · 0 评论 -
Redis安装的常见错误
/bin/sh: cc: command not found这个报错可以通过安装gcc和gcc-c++来解决,原因是这个软件使用c语言编写的,使用时需要编译,我们需要给它一个编译的环境yum install gccyum install gcc-c++server.c:xxxx:xx: error: ‘xxxxxxxx’ has no member named ‘xxxxx’# 查看gcc版本是否在5.3以上,centos7.6默认安装4.8.5gcc -v# 下载包yum -y ins原创 2020-05-15 18:48:16 · 882 阅读 · 0 评论 -
Redis的下载安装和开启关闭
学习需了解的知识点Web的session需要存在那里?关系型数据库通过破坏一定的业务逻辑来换取性能的理解NoSQL数据库概述常用的NoSQL数据库行式数据库和列式数据库原创 2020-05-15 11:14:05 · 175 阅读 · 0 评论 -
行式数据库和列式数据库
行式数据库和列式数据库的显示其实是一样的,这两种数据库的区别在于查询时候读取的方式,可以简单理解为,行式数据库就是每次读一行,列式数据库就是每次读一列示例这是一张数据库的表idnamecityage1张三北京102李四上海203王五广州304赵六深圳40行式数据库查询id=1的数据很快查询年龄的平均值很慢列式数据库查询id=1的数据很慢查询年龄的平均值很快使用场景行式数据库适用于OLTP事务型处理,也就是操作数据原创 2020-05-15 10:54:19 · 355 阅读 · 0 评论 -
常用的NoSQL数据库
Memcached很早出现的NoSql数据库数据都在内存中,不支持持久化(持久化简单理解就是将内存的数据存放在硬盘中)支持简单的key-value模式存储(只支持字符串)一般是作为缓存数据库辅助持久化的数据库Redis几乎覆盖了Memcached的绝大部分功能(可以理解为Memcached的升级)数据在内存中,支持持久化,主要作用备份恢复除了支持简单的key-value模式外还支持多种数据结构,比如说list,set,hash,zset等等…一般是作为缓存数据库辅助持久化的数据库原创 2020-05-14 22:52:37 · 182 阅读 · 0 评论 -
NoSQL数据库概述
概述Nosql的意思是不仅仅是sql,并不是不是sql,一般指的是非关系型的数据库NoSQL不依赖于业务逻辑方式存储,而采取简单的key-value的模式存储,因此大大的增加了数据库的拓展能力NoSQL不遵循SQL标准不支持ACID特征(事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性)远超于SQL的性能NoSQL适用场景对数据高并发的读写海量数据的独写对数据高可扩展的NoSQL不适用场景需要事务支持基于SQL的结构化查询存储,处理复杂的关系原创 2020-05-14 20:52:37 · 327 阅读 · 0 评论 -
关系型数据库通过破坏一定的业务逻辑来换取性能的理解
常见的几种切分方法简单的来说就是,当一个表里面的数据太多的时候进行CEUD(增删改查)的效率都会降低,在关系型数据库里我们常常通过以下几种方法来通过破坏一定的业务逻辑来换取性能水平切分垂直切分读写分离1_水平切分水平切分就是就通过切割行,将一张表分割成多张表来提升性解释1张表里面有十万条数据,我们通过水平切割,将其分割成10张表,每张表存放原来的1万条数据,这样进行CRUD时的效率就会有所提升,但是因为原本是一张表的数据却被我们切割成了10张表,造成了一定的逻辑破坏2_垂直切分垂直切原创 2020-05-13 17:31:40 · 208 阅读 · 0 评论