Redis学习笔记

基于8086微机原理数字钟计时器系统设计 *单片机设计介绍,基于8086微机原理数字钟计时器系统设计。 阅读详情

Reids学习笔记

1、获取Redis资源

wget http://download.redis.io/releases/redis-5.0.5.tar.gz

2、安装
cd redis-5.0.5.tar.gz
make
配置软连接,以便后期方便启动Redis:
   ln -s /usr/local/redis-5.0.5/src/redis /usr/bin/redis  #服务端
   ln -s /usr/local/redis-5.0.5/src/redis-cli /usr/bin/redis-cli  #客户端
3、将redis加入到开机启动

vi /etc/rc.local //在里面添加内容:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)

4、开启Redis
redis redis.conf  (redis redis.conf的目录)
5、配置Redis客户端链接密码 在这里插入图片描述
6、Redis-cli参数意义
 	--raw  #防止中文乱码 
 	-a "password" #带密码登陆
 	-p 6379  #连接端口
 	-h 127.0.0.1 #连接IP
	-r #命令执行多次 eg: redis-cli -r 3 ping  将执行三次ping操作
	-i #多与 '-r' 连用,表示每隔几秒执行一次;只支持s,如需ms应换算成 *.**
	-x #echo "world" | redis-cli -x set hello 选项代表从标准输入(stdin)读取数据作为redis-cli的***一个参数
	--slave #个人理解为多客户端同步数据,还请自查资料
	--scan & --pattern #用于扫描指定模式的键
	--rdb #请求Redis实例生成并发送RDB持久化文件,保存本地。可用于定期持久化文件备份
7、数据类型以及语法
string(字符串): 
	SET runoob "测试string"  
	GET runoob
	SETRANGE runoob 0 ** #替换指定位置的字符串为**
	GETRANGE runoob 0 5 #获取当前runoob的0-5之间的子字符   0 —— -1查询所有字符串
	SET runoob
	DECR runoob 		#将 key 中储存的数字值减一
	INCR runoob 		#自增1
	getset key **  		#先获取key值再set新值,下次获取为新值
hash(哈希)-->map
	HSET hashk hk hv    #插入数据
	HGET hashk field1 
	HMSET hashk field1 "Hello" field2 "World"  
	HMGET hashk field1 field2
	HDEL hashk	hk1		#如有使用的key 则需要删除
	HGETALL hashk 		#获取所有的元素
	HLEN hashk 			#获取hash的长度
	HEXISTS hashk hk1	#判断key是否存在
	HKEYS hashk #只获取所有的field
	HVALS hashk #只获取所有的value
	HINCRBY hashk hk1 1 #将hk1的value的值增1
	HSETNX hashk hk1 hv1 #如果hk1存在可设置hv1,不存在则不能设置
list(有序集合)倒叙:先插入的下表最大:
	lpush listK listV1 	#左插入
	rpush listK listV2 	#右插入
	lpop listk  		#移除最左侧一个元素
	rpop listk  		#移除最右侧一个元素
	lrang listK 0 10 	#获取去区间值
    lindex listk 1 		#通过下标获取元素
    llen listk 			#获取list的长度
    lrem listk * 		#移除指定的元素
    ltrim listk 0 2      #截取指定长度
    rpoplpush listk nlistk #将listk的最后一个元素移动到nlistk中
    lset listk 0 nval    #将对应下标的值更新为nval,不存在报错
    linsert listk after/before existsV nVal #将nVal值插入到listk中existsV值的前/后
set(无序集合):
	sadd setK setV1  	#添加成功返回1,已存在则返回0
	smembers setk       #查看set中的所有元素
	smembers setk setV1 #判断某元素是否存在于set
	scard setk    		#获取set集合的所有元素
	srandmember setk     #随机输出一个元素
	spop setk 			#随机移除元素
	smove setk setk2 "val" #将指定的值移动到另一个set集合中
zset(sorted set:有序集合):
	zadd zsetk k zsetV1 # 可根据k排序
	zrange zsetK 0 2  	#获取当前zsetK的0-2之间的子字符
	zrangebyscore zsetk -inf +inf # 从小到大排序展示
	zrem zsetk zk       #移除指定元素
	zcard zset          #获取zset的数量
	zrevrange zset 0 -1 #从大到小进行排序
	zcount zsetk   0 3     #获取指定区间setk的成员数量
8、Redis Keys命令
del key #删除key
dump key #返回序列化的key eg:set  yog 3被序列化后"\x00\xc0\x03\t\x00\xe1h\xa1\xbe\x85\x03\x0f\x8e"
exists key #判断key是否存在
expire key 10 #设置key的有效期为10s
expireat key 1293840000 #与expireat的区别在于expireat接受时间戳
pexpire key milliseconds #接受毫秒级时间戳
move key *db  #将当前key移动到 *db库中
persist key #取消当前key的过期时间
ttl key #返回当前key的剩余生存时间
rename key newName #为当前key设置新的name
type key #返回当前key的类型
8、benchmark 压测命令:
9、基础操作
keys *   查看所有key
FLUSHALL 清空全部数据库内容
flushdb  清空当前库的所有key
10、三种特殊的数据类型
a、geospatial地理位置

1、在Redis3.2版本出现 应用场景:朋友定位、附近的人、距离计算

2、常用命令:

geoadd  city 116.405 39.900 beijing   #添加地理位置
geodist city beijing chongqing m/km/mi/ft #获取两城市的直线距离
geohash city veijing chongqing #将二维的经纬度转换成一维的字符串,两字符串越近,实际位置越相近
geopos city beijing chongqing #获取指定的城市地理位置
georadius city 104.34 30 1000 km   #查询指定地理位置为中心的方圆1000km内的城市
georadiusbymember city beijing 1000 km #找出指定元素周围的其他元素
b、Hyperloglog 基数统计

1、什么是基数 : A { 2,3,5,6} B{1,3,5,6,7} 基数(不重复的数据) =5 可接受误差

2、优点: 占用的内存固定,2^64不同的元素的技术,只需要使用12k的内存,从内存角度来比较Hyperloglog优先。

3、常用命令:

pfadd key1  a a b c d e f #创建一组元素
pfcount key1 #统计key1的基数数量 当前实例为7
c、Bitmap 位存储

1、应用场景:统计用户信息:活跃不活跃 打卡未打卡等

2、常用命令:

setbit sign 0 0/1   #设置当天状态
getbit sign 0 		#查看当天状态
bitcount sign       #统计总的状态

11、trancations事务

Redis单条命令保证原子性,但事务不保证;Redis事务也没有隔离级别的概念

1、Redis事务本质:一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!

2、redis的事务执行顺序:

* 开启事务(multi) 
* 命令入队
* 执行事务(exec)
* 放弃事务(discard)

在这里插入图片描述

3、运行时异常

4、监控

​ 悲观锁:无论何时都要加锁,影响性能。

​ 乐观锁:认为何时都不会出现问题,所以不会上锁,更新数据时会判断期间是否有人修改过数据。

12、Jedis redis官方推荐java连接开发工具

在这里插入图片描述

13、与SpringBoot整合

说明:在springBoot2.X之后,jedis被替换成lettuce

jedis: 采用直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池,更像BIO模式。
lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据,更像NIO模式。

1、添加pom依赖: spring-boot-starter-data-redis

2、编辑配置类application.properties

自动配置类:RedisAutoConfiguration、Reids模板类:Redistemplate

spring.redis.host=127.0.0.1
spring.redis.port=16379
spring.redis.lettuce.pool=*** #集群连接池

在这里插入图片描述

3、自定义RedisTemplate类
在这里插入图片描述

14、redis.conf配置文件详解

网络

通用

快照

限制

15、Redis持久化

​ 1、rdb

​ 2、AOF: 以日志文件形式来记录每个操作(记录写指令,不记录读指令);只允许追加文件不能修改文件;Redis重启后会读取文件重新将数据读入内存,完成数据的恢复工作。

* 默认是不开启的,只需要修改配置appendonly yes即可开启;重启redis即可生成appendonly.aof文件。
  1. 当appendonly.aof文件异常是不能启动redis的,可使用redis-check-aof --fix 进行修复。

    优缺点:

    优: 
    	1、每一次修改都会同步,文件完整性更好。
    	2、每一秒同步一次,可能会失去这一秒的数据。
    	3、从不同步,效率高。
    缺: 
    	1、由于是文件存储,占用磁盘远大于rdb,修复速度也比rdb更慢。
    	2、aof运行效率也要比rdb慢,so 我们redis默认的配置就是rdb持久化。
    
16、发布订阅

发布订阅(pub/sub)是一种消息通信模式。
在这里插入图片描述

测试

常用命令
在这里插入图片描述

订阅
在这里插入图片描述
发布
在这里插入图片描述

17、主从复制

主从复制是单向数据的复制,只能由主节点到从节点;默认情况下每台redis服务器都是主节点,并且每台主节点可有多个子节点,但是一个子节点只能有一个主节点。

主从复制的作用:

1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供服务,由子节点提供读服务,分担服务器压力,可大大提高redis的并发量。
4、高可用基石:主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础。

搭建主从复制环境:

临时生效命令:
	SLAVEOF 127.0.0.1 16379  #认主节点
	info replication	 #查看主从关系
永久生效须通过配置文件配置。

注意事项:

当master节点宕机后slave节点依然链接主节点,只是不能进行写操作,依然可读取存量数据,master节点重启后写入的数据,会继续同步到slave节点中。
​当slave首次启动成功并连接到master后就会发送一次sync同步操作;如遇到slave异常宕机等异常后重启、配置master后就会触发一次自动全量复制操作,在slave中可查询到master中的数据。
​M <---- S-M <---- S 模式下:当M 宕机、关闭时,S-M任然没有写入权限,只有S-M通过手动执行 slaveof no one 谋权篡位后才能有写权限,当M 再次启动回归其下的slave节点就不存在啦。
18、哨兵模式

哨兵模式:

配置哨兵配置文件:

sentinel monitor redisM 127.0.0.1 16379 1   #配置被监听的redis  1为票数,票数最高的会成为主节点。(有一定延时)
redis-sentinel sentinel.conf #启动哨兵模式  

注意:当前master节点死掉,哨兵模式指定选取新的master节点;当死掉的master节点重启后,哨兵模式会自动将其配置成slave节点。

优缺点:

y:
	1、哨兵集群,基于主从复制模式,所有节点的主从复制的优点他都有。
	2、主从可以切换,故障可以转移,系统的可用性更好。
	3、哨兵模式就是主从复制的升级版,由手动到自动。
q:
	1、主从切换有延时性,不能保证数据完整性。
	2、实现哨兵模式配置比较麻烦。
	3、redis不好在线扩容,集群容量一旦达到上限,扩容十分麻烦。
19、Redis缓存穿透和雪崩

缓存穿透概念

​ 当用户想要查询一个数据时,在redis内存数据库中没有,也就是缓存没有命中,于是向持久化层数据库查询,发现也没有于是本次查询失败。当出现很多用户时,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大压力,这时就相当于出现缓存穿透。

解决方案: 布隆过滤器、缓存空对象

缓存击穿概念:

​ 缓存击穿是指一个key十分热点,在不停的扛着大并发,大并发集中对这个点进行访问,当这个key在失效的瞬间,持续的大并发就会击穿缓存,直接请求持久层数据库,就行屏障被凿开一个洞。

​ 当key在过期瞬间,有大量的并发请求访问,这类数据一般是热点数据,由于缓存过期,会同时访问数据库来查询最新数据,并且会写缓存,会导致数据库瞬间压力过大。

解决方案:

1、设置热点数据永不过期

2、添加互斥锁:使用分布式锁,保障对于每个key同时只有一个线程去查询后台服务,其他的线程没有获取分布式锁的期限,因此只需要等待即可。这种方式将高并发的压力转移到分布式锁,因此对分布式锁的考验很大。

python爬虫项目(一百九十八):电商平台用户行为数据分析与推荐系统、爬取电商平台用户行为数据 本文详细介绍了如何通过爬虫技术抓取电商平台的用户行为数据,并结合数据分析技术,构建一个简单的推荐系统。使用Selenium模拟用户操作抓取动态网页数据,并通过API接口直接获取用户行为数据,能够为后续的用户行为分析提供基础数据。我们结合了基于用户协同过滤、基于商品协同过滤和矩阵分解等方法,构建了不同的推荐系统。实际应用中,可以进一步优化推荐算法,利用更复杂的深度学习技术和更高效的数据处理方法,提升推荐的准确性和个性化程度。 阅读详情

相关推荐

SRAM vs RRAM:存算一体芯片选型指南(含最新技术对比)

本文深入对比了SRAM与RRAM在存算一体芯片设计中的核心差异,为硬件工程师和架构师提供实战选型指南。文章从技术本质、性能、功耗、成本及设计风险等多维度剖析,指出SRAM基于成熟CMOS工艺,适合高精度、低延迟场景;而RRAM凭借非易失性和高密度潜力,在超低功耗、固定模型应用中优势明显。决策需综合项目预算、上市时间及技术储备。

e4f5g6h的博客 942

Redis 群集部署

一、Redis群集相关概念 Redis是从3.0版本开始支持cluter的,采用的是hash槽方式,可以将多个Redis实例整合在一起,形成一个群集,也就是将数据分散存储到群集中的多个节点上。 Redis的cluster是一个无中心的结构,在群集中,每个master的身份是平等的,每个节点都保存数据和整个群集的状态,并且知道其他节点所负责的槽,也会定时发送心跳信息,能够及时感知群集中异常的节点,并...

weixin_45116475的博客 548

DaVinci Configurator BswM模块配置

BswM是AUTOSAR(Automotive Open System Architecture)系统架构中的模块之一,它是基础软件模块(BSW)之一。BswM全称为Basic Software Module Manager(基础软件模块管理器),它负责管理和协调其他BSW模块的行为和交互,以实现整个系统的功能。BswM可以被看作是一个状态机,通过监控系统的状态和事件触发,来控制其他BSW模块的运行状态和互相配合,以达到整个系统的预期行为。

qq_59258431的博客 3949

Docker | redis集群部署实战

前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性。

heyYouU的博客 903

java三角套利_三角对冲套利-EA原理全解析

它是两个直盘货币和一个交叉盘货币之间的相互对冲,交易员往往受到外界因素的影响无法严格执行造成亏损。该系统经过大量数据统计分析和严格的科学论证计算,并通过多年实盘交易验证可以达到稳定盈利。希望交易员严格按照交易规则执行。此策略利用交叉外汇对的市场价格与其合成价格的价差来实现套利,还以EUR/USD和GBP为例:1,我们关注三个外汇对:EUR/USD,GBP/USD,以及GBP/EUR2,计算GBP/...

weixin_29531897的博客 2418

python基于语音识别的智能垃圾分类系统

大家好我是蓝天,混迹在java圈的辛苦码农。今天要和大家聊的是一款《python基于语音识别的智能垃圾分类系统》毕业设计项目。项目源码以及部署相关请联系蓝天,文末附上联系信息。🎈作者:蓝天🎈🎈个人简介:精通 Java、Python、C#、C、C++ 等编程语言,同时对微信小程序、Php 和 Android 等技术也能熟练掌握,可为大家提供全面的技术支持与交流。我拥有丰富的成品 Java、Python、C# 毕业设计项目经验,能够为学生提供各类个性化的开题框架及实际运作方案。🎈。

Chujun123528的博客 660

Redis初学17:集群

集群 简介 Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。 Redis 集群通过分区(partition)来提供一定程度的可用性(availability): 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。 集群搭建 这次实在电脑开不了那么多台虚拟机,就在一台服务器上模拟了。 集群的搭建最少需要6个节点 我们既然要搭建集群,那么master节点至少要3个,slave节点也是3个,为什么呢?

小关同学的博客 507

毫米波雷达之CFAR 目标检测

恒虚警率(CFAR)算法是一种广泛应用于雷达目标检测的算法,其主要目 标是减少由于杂波与回波之间强度不对称而引起的误报,以确保相对恒定的虚警 率。如图 3.4(a)所示,表示由距离单元组成的一维数据。在待测单元 D 周围选 择若干个背景杂波功率的蓝色单元构成参考滑窗,称为参考单元;而待测单元 D 相邻的若干个不用于背景估计的单元则称为保护单元。当参考单元和保护单元的 维度从一维扩展到二维时,相应的 CFAR 检测由一维 CFAR 演变为二维 CFAR 以处理参考窗口,如图 3.4 (b)所示。

m0_56120826的博客 4922

redis集群部署实战

前面已经简单熟悉过redis的下载安装使用,今天接着部署redis集群(cluster),简单体会一下redis集群的高可用特性。

weixin_47367099的博客 507

一文学会python基础知识

1. python 运行环境 1.1 脚本式环境 1.2 交互式环境 2. python 注释 3. 变量及变量命名 4. 关键词 BIFS 5. 标准操作符 6. 条件判断 7. 循环 8. python 数据类型 9. python 序列 9.1 序列-字符串(str) 9.2 序列-列表 9.3 序列-元组 10. 字典 11. 集合 12. python内存管理及可变、不可变对象 13. 函数 13.1 函数参数 13.2 return and yiled(生成器) 13.3 参数传递处理 ...

weixin_43178406的博客 26万+

【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍)

本专栏整理了《深度学习时间序列预测案例》,内包含了各种不同的基于深度学习模型的时间序列预测方法,例如LSTM、GRU、CNN(一维卷积、二维卷积)、LSTM-CNN、BiLSTM、Self-Attention、LSTM-Attention、Transformer等经典模型,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 4万+

Redis 集群的核心算法--一致性hash算法

讲解分布式数据存储的核心算法,数据分布的算法 hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法 用不同的算法,就决定了在多个master节点的时候,数据如何分布到这些节点上去,解决这个问题 1、redis cluster介绍 redis cluster (1)自动将数据进行分片,每个master上放一部分数据 (2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的 在redis cluster架构下,每个re

Java持续实践 1547

【Zephyr存储专题】06_存储块设备驱动开发(Nand Flash)

本文介绍了基于Zephyr系统的NAND Flash驱动实现方案,重点阐述了Flash驱动模型的核心架构和关键API设计。

zero的博客 1804

Redis技术学习笔记

Redis 是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP,使用很方便。

qq_739988982的博客 1822

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

redis基础学习笔记

1. 单机MySQL的年代90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候,更多的去使用静态网页 Html~服务器根本没有太大的压力!思考一下,这种情况下 : 整个网站的瓶颈是什么?数据量如果太大,一个机器放不下数据的索引(B+ Tree),一个机器内存也放不下访问量(读写混合),一个服务器承受不住2. Mencached(缓存)+MySQL+垂直拆分(读写分离)站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!

weixin_43977307的博客 1908

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

redis学习笔记

redis学习笔记 #步骤 论坛 商城 app 小程序 mysql 关系型数据库 redis mongo es nosql(非关系型数据库) 关系:互补关系 特点:具体看应用场景 第一天--redis介绍 单节点 1.介绍 2.安装部署 3.配置文件介绍 4.redis基础命令 5.数据持久化 结构: 1.主从复制 2.哨兵 3.集群 运维 redis常用运维工具 故障...

三思博客 389

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

博客目录——Redis学习笔记

【Redis学习笔记】Redis笔记(一)——特点、基础命令和数据结构 【Redis学习笔记】Redis笔记(二)——Redis客户端

roguesir的博客 883

redis学习笔记-XMind

** redis学习笔记-XMind **

doubanjiangjiang的博客 482

Redis学习笔记(基础篇)

SQLNoSQL数据结构结构化非结构化数据关联关联的无关联查询方式SQL查询非SQL事务特性ADIDBASE存储方式磁盘内存扩展性垂直水平使用场景1)数据结构固定 2)对一致性、安全性要求较高1)数据结构不稳定 2)相关业务对数据安全性、一致性要求不高 3)对性能有要求。

qq_63003916的博客 1280
上一篇: 非常详细的虚拟机配置网络
下一篇: JUC学习笔记(持续更新)
渣成沙
博客等级 码龄11年 36粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值