Redis技术
Redis是什么
我们在工作中或者面试中通常会遇到redis这项技术,可是redis我们会用但是他到底是什么呢,其实Redis是完全开源免费的,遵守BSD协议,是一-个高性能(NOSQL)的key-value数据库IRedis是- -个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
为什么redis数据库这样受欢迎呢,因为他是完全开源免费的,那我们上边说它遵循BSD协议,我们也许就有疑问了这个BSD协议到底是个什么玩意儿呢。链接:BSD协议百度百科 偷懒了哈哈看一下百度百科。
还有就是他是一个高性能的(NOSQL)的key-value的数据库是由C语言编写的,NOSQL=非关系型数据库,mysql这些是关系型数据库,那关系型数据库和非关系型数据库有什么区别呢,
nosql介绍
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。来源—百度百科
关系型数据库sql
SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。 [1]
SQL Server数据库包括Microsoft SQL Server以及Sybase SQL Server两个子数据库,该数据库能否正常运行直接关系着整个计算机系统的运行安全。
来源 —百度百科
sql数据库和nosql数据库的区别
sql关系型数据库:表和表之间会有关联关系。
1.这个数据库应该是我们在工作中使用最多的,我们可以试想一下编写一个sql执行以后这条sql的执行过程,解析sql,转换,查磁盘等等。再和以下nosql对比一下。
nosql数据库:数据之间都是独立的没有任何关联关系。
1、数据模型比较简单;
2、需要灵活性更强的IT系统;
3、对数据库性能要求较高;
4、不需要高度的数据-致性;
5、对于给定key,比较容易映射复杂值
redis是一个什么的数据库
redis是一种运用key-value的形式的数据库,是一种会使用到hash表的数据库。也是属于nosql非关系型数据库。
1.redis支持持久化。可将数据存储到磁盘,启动后加载
2.redis支持多种数据类型,list,set,zset,hash,string数据类型。
3.redis支持集群搭建,高可用,哨兵,数据备份等。
redis的性能
1.读写效率快,读在11万次/s,写8万次/s.
2.redis是由C语言编写的,在执行的时候不需要虚拟机进行转换等操作。
3.redis操作原子性的要么成功,要么都不成功具,支持事务也是原子性的。
4.redis持久化rdb和aof
5.redis可以做队列
6.可用于做缓存数据库(在项目中用的最多的就是缓存数据库)
redis安装
安装redis目前我这里是windows和liunx下安装redis。
windows安装redis
windows安装redis,支持64和x86 的安装
2.可以下载压缩包进行解压后在cmd启动
这是解压出来包结构,这种的还比较简单,直接解压就可以启动使用,在redis.windows.conf配置相关的参数后指定文件的话,启动用命令,redis-server redis.windows.conf 进行启动就可以。
2.安装版本的为安装完在电脑服务下把redis的服务开启就可以了,windows相对来说还是比较简单的。
3.设置参数等可以熟悉一下redis的命令就可以在cmd中进行用命令修改,也可以进入redis的安装目录下操作也可以。
liunx下安装redis
redis的liunx版本在官网也可以下载到 链接:redis官网
相关版本可以按自己的来。
我这里下载的4.0版本,追求稳定
.将安装包下载下来之后我们可以通过SSH将安装包拿到liunx上,找到自己的存放目录进行解压,tar zxvf redisxxxxx 解压命令,
解压 tar axvf redis-4.0.14
cd redis-4.0.14
解压完成后进入进入加压后的文件夹
后在目录下进行 make编译成功后make install PREFIX=/usr/loca/xxx
进行安装,
安装完成后进入redis的配置文件中设置后台运行将daemonize no 改成daemonize yes就OK了最后启动redis运用./redis-server 来启动,
验证启动没启动成功可以进去客户端,redis-cli中ping一下就OK了
如果想停止redis可以采用kill-9杀死redis的进程进行关闭(不建议用容易丢数据)。或者在客户端shutdown进行关闭
这便是redis在liunx下的安装
redis的配置文件
找到redis的配置文件,他在你的安装目录下的bin里边可以找到,
可以通过命令vi或者vim进入修改,然后将redis.conf放入和bin同一级别的目录下,这样redis启动变可以识别到这个配置文件了。
具体的redis的参数的意思具体查看,来源网络就不一个一个的写了链接l来源
# vi redis.conf
daemonize yes #是否以后台进程运行
pidfile /var/run/redis/redis-server.pid #pid文件位置
port 6379#监听端口
bind 127.0.0.1 #绑定地址,如外网需要连接,设置0.0.0.0
timeout 300 #连接超时时间,单位秒
loglevel notice #日志级别,分别有:
# debug :适用于开发和测试
# verbose :更详细信息
# notice :适用于生产环境
# warning :只记录警告或错误信息
logfile /var/log/redis/redis-server.log #日志文件位置
syslog-enabled no #是否将日志输出到系统日志
databases 16#设置数据库数量,默认数据库为0
############### 快照方式 ###############
save 900 1 #在900s(15m)之后,至少有1个key发生变化,则快照
save 300 10 #在300s(5m)之后,至少有10个key发生变化,则快照
save 60 10000 #在60s(1m)之后,至少有1000个key发生变化,则快照
rdbcompression yes #dump时是否压缩数据
dir /var/lib/redis #数据库(dump.rdb)文件存放目录
############### 主从复制 ###############
slaveof <masterip> <masterport> #主从复制使用,用于本机redis作为slave去连接主redis
masterauth <master-password> #当master设置密码认证,slave用此选项指定master认证密码
slave-serve-stale-data yes #当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress"错误信息。但INFO和SLAVEOF命令除外。
############### 安全 ###############
requirepass foobared #配置redis连接认证密码
############### 限制 ###############
maxclients 128#设置最大连接数,0为不限制
maxmemory <bytes>#内存清理策略,如果达到此值,将采取以下动作:
# volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
# allkeys-lru :删除不经常使用的key
# volatile-random :随机删除即将过期的key
# allkeys-random :随机删除一个key
# volatile-ttl :删除即将过期的key
# noeviction :不过期,写操作返回报错
maxmemory-policy volatile-lru#如果达到maxmemory值,采用此策略
maxmemory-samples 3 #默认随机选择3个key,从中淘汰最不经常用的
############### 附加模式 ###############
appendonly no #AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘
appendfilename appendonly.aof #指定更新日志文件名
# AOF持久化三种同步策略:
# appendfsync always #每次有数据发生变化时都会写入appendonly.aof
# appendfsync everysec #默认方式,每秒同步一次到appendonly.aof
# appendfsync no #不同步,数据不会持久化
no-appendfsync-on-rewrite no #当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。
############### 虚拟内存 ###############
vm-enabled no #是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存
vm-swap-file /var/lib/redis/redis.swap #虚拟内存文件位置
vm-max-memory 0 #redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
vm-page-size 32 #每个页面的大小为32字节
vm-pages 134217728 #设置swap文件中页面数量
vm-max-threads 4 #访问swap文件的线程数
############### 高级配置 ###############
hash-max-zipmap-entries 512 #哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间
hash-max-zipmap-value 64 #哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间
list-max-ziplist-entries 512 #list数据类型多少节点以下会采用去指针的紧凑存储格式
list-max-ziplist-value 64 #list数据类型节点值大小小于多少字节会采用紧凑存储格式
set-max-intset-entries 512 #set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储
activerehashing yes #是否激活重置哈希
是否在后台开启
#是否在后台执行,yes:后台运行;no:不是后台运行
daemonize yes
#redis监听的端口号。
port 6379
数据库数量
#数据库的数量,默认使用的数据库是DB 0。可以通过SELECT命令选择一个db
databases 16
持久化
#当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,no:可以继续进行工作,可以通过info中的rdb_last_bgsave_status了解RDB持久化是否有错误
stop-writes-on-bgsave-error yes
#使用压缩rdb文件,rdb文件压缩使用LZF压缩算法,yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
rdbcompression yes
多久写入磁盘
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有1000个更改。
设置密码
requirepass foobared
默认连接数
maxcllents 128
设置最大内存
maxmemor
参数的设置可以细看一下,修改基本都是在这里修改的。
目前redis的介绍,安装,配置文件,就到了这里了。