35-Redis-1

1.概念

redis首先是一个nosql

也就是说是不需要些sql语句的,其工作的原理,就是在内存里面做一个持久化,在内存中的数据,会有一个持久化到内存中的行为,这里会受到约束,这里的约束是可以自己写的

2.redis的一些特性

①数据持久化,这里redis其实就是一个独立的数据库,有client的server,用client来操作server,进行数据库的读写

②要知道redis是一个菲关系型的数据库,所以他的储存数据的方式是key-value,这里支持的数据类型有很多,string hash list set zset等,目前是学到了hash

③一个redis可以有16个数据库,这句话是什么意思呢,就是类似mysql的表,mysql可以有很多个独立的表,这里mysql可以有16个不同的数据库,在不同的数据库就可以有不同的命名key值了

④高性能,redis的性能非常高,虽然是单线程,具备原子性,多个操作也支持事务

3.redis安装

解释一下,在这里,老师用一个远程linux工具,用代码安装了redis,然后进行了一系列的操作设置,但是最终肯定是跟Navicat一样,还是使用图形化界面来对redis进行操作,所以在这里,这一系列的命令,了解即可...主要要掌握,如何用java来操作redis,如何用图形化来操作,实际应用的时候,如何去写

4.redis的一些列操作

bind主机等,规定哪些客户端可以访问redis,这个肯定是要有的,然后可以设置客户端访问时的密码,然后设置是否成为一个守护进程,也就是说是不是像windows服务一样,没有窗口,一直存在linux进程中.

然后可以对log进行一些列的操作,到时候实际工作中,肯定是需要大量的log来进行分析的

还有save<seconds> <changes>这种设置一些关于内存数据持久化的设置

slaveof <masterip> <masterport>,关于主从数据库,读写分离,负载均衡等,这个还是要上demo自己写,等到redis搞完,下个月就开始自己找代码写了,然后开始搞几个项目,以备不时之需

5.daemonize

这里可以设置redis是否以守护进程的方式来访问的:

    1-->daemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

    2-->daemonize:no: 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

其实就是,一个是设置成一个程序,另一个有点类似windwos的server

之前打开mysql的时候也是这样的,每次打开电脑,就有一个mysql的服务在跑着

6.若干设置-some settings

默认端口

在这里指定的redis默认端口为6379

timeout

这里是客户端连接redis默认多少秒以后断开连接

loglevel verbose

redis的日志记录级别

logfile stdout

日志记录方式

redis多数据库连接数量-->设置可以允许有多少个数据库可以连接redis

database 16

指定在多长时间内,有多少次更新操作,就将数据库同步到数据文件

save<seconds> <changes>

这里的意思就是,在一定的条件下,进行一个内存数据持久化的操作

指定持久化的时候,数据是否压缩 

rdbcompression yes

dbfilename.dump.rdb

指定本地数据库文件名,默认为dump.rdb

指定数据库存放路径

dir ./

主从-->

当本服务器设置为slave服务器时,设置master服务的IP地址以及端口,在redis启动的时候,它会自动从mater进行数据同步

slaveof <masterip> <masterport>

master服务器密码

当master服务器设置了密码的时候,这里是写配置的密码

masterauth <master-password>

设置本redis的数据库密码

requirepass foobared

客户端连接本redis数据库需要密码,默认是关闭,这里肯定要设阿

maxclients

设置同一时间,连接的最大客户端数量

指定redis的最大内存限制

这里需要注意的一点是-->

这里给redis设置了一个最大内存,如果redis的内存中达到了最大值,redis会尝试清除已到期,或即将到期的key

如果处理完以后,内存还是很满,那么将无法进行写入操作,只能读取.

在这里注意一下,默认的redis的内存是256M,但是这里有点像之前的jvm配置内存,分别为s0区,永久区,配置最大内存阿等一系列内存分配

链接redis的客户端

redis-cli -h IP地址 -p 端口 -a 密码

-------------tips:这里讲的7788的其实都没啥用,了解一下后马上就给忘记了-------------------------

7.RDB&AOF

这两种明显AOF更加合理,但是没有完美的解决方案,只有尽可能的完美

8.内存溢出

内存溢出的话,redis会宕机

在这里提供了2种解决方法

      为数据设置超时时间, 在进行key定义的时候,给你加一个超时时间字段

      lru算法

通过这种算法,把不用的数据删除

这里有几种删除模式

其实这里的redis-vm有一点类似java的vm...

一样是可以选择策略,或者说选择回收机制...驱逐键,删除key等

9.自定义配置redis

主要有3个地方:

    1.守护进程

    2.bind客户端ip

    3.设置客户端访问密码

10.redis的关闭

当正常关闭的时候,redis也会做持久化

如果用kill,那就是非正常方式关闭redis,这样就不会做持久化

11.使用redis 的很多键命令

这里有一个:

EXPIRE key seconds

为某一key设置过期时间

还有TTL key,查询一个key的剩余生存时间

------在这里插一句话-----如果请求者请求的数据,在redis中时过期的,这个时候,不要让redis的数据清除,而是应该等在异步从数据库查到数据以后再更新redis的值,如果直接在redis中把数据清除了,那么有可能很多数据在同一时间请求mysql,导致数据库雪崩------

12.选择数据库

redis可以用select来选择数据库,不同的数据库,里面的key自然不一样

一个redis可以连16个数据库按照0-15的索引,其实这里的数据库的作用就等于mysql的“表”,非关系型数据库,数据库=表

13.redis命名规范

非关系型数据库redis,如果要使数据之间有关联,要遵守以下命名规范

所以,key最好使用同一命名方式

到时候肯定还是需要学习redis的命名规范的

14.redis5种数据类型

string hash list set zset

关于数据结构,hash什么的。。。红黑树什么的,基础不好就是这样子,啥都学不到

15.二进制安全(作为一个垃圾程序员,无暇管这些)

如果数据在传输过程中可以被篡改或者拦截等,那就说这个数据是非二进制安全的 

在redis的数据传输过程中,都是二进制的...不涉及编码解码,所以是安全的

16.覆盖

这里注意,有一个 普通string

这个string的key跟一个hash的filed重名

那么这个时候操作就会有问题,意思就是

在整个redis域里面,在一个数据库里面

不能用重名的不同类型的key的操作...

17.redis的操作

用hash来做类似关系型数据库的存储,有两种方式

①把用户ID作为key,而value是一个序列化的对象

②用户的对象有多少对key-value,那么存多少对key-value,那么这里完整的key就是:用户ID + 对应的属性名

但是这里是n对key-value,用户ID这个字段,一个对象里面有多少对数据,那么就有多少个ID,这个字段在内存中被大量浪费了

18.redis键命令

其实就相当于redis语言吧,这里了解一下,主要看如何用java操作redis

小结-->

             到时候用到redis的再来好好研究一下如何使用,用redis做分布式缓存毕竟是非常需要的
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值