NoSql之redis的简单介绍
Posted java书院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoSql之redis的简单介绍相关的知识,希望对你有一定的参考价值。
一、NoSql介绍
1.nosql:非关系型数据库
2.特点:非关系型(没有固定的表结构,也没有字段/行列,但有“库”的概念),分布式的(主从分离),开源的,水平可扩展。
3.nosql产品:mongodb、redis、memcached、hbase等
4.优势:
1)处理超大量的数据
2)运行在便宜的pc服务器集群上
3)最大程度上解决了关系型数据库在性能上的问题
5.使用场景:
1)数据高并发读写(mysql对于上万次的写入请求,硬盘的IO是无法承受的)
2)需要对海量数据进行高效率存储与访问(我们可以想象一下,当过亿的数据同时对mysql等关系型数据库访问,那会是什么情况)
3)对数据的高可扩和高可用(对于已上线的项目来说,对数据库进行升级和扩展是非常痛苦的,往往我们需要进行停机维护然后进行数据迁移,如果使用nosql,我们只需要去增加数据库的节点即可进行集群的扩展)
二、NoSql之Redis数据库介绍
1.Redis是开源的,先进的key-value存储,通常称为数据结构服务器.redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2.Redis能干什么
1)对数据进行内存存储和持久化
2)可以作为发布、订阅消息系统
3)定时器、计数器
3.Redis的部署场景
1)应用直接访问redis数据库(这种数据存储方式存在一定的安全性问题,如果redis中的shutdown释放了,那么意味着存储在里面的数据将丢失)
2)应用先访问redis数据库,当未查询到数据后再去mysql数据库中查询数据
4.Redis安装(linux系统中进行安装)
这里我使用的redis-3.0.4.tar.gz这个版本
1)解压:
tar -zxvf redis-3.0.4.tar.gz
2)进入redis-3.0.4目录
3)编译(这里需要先gcc++编译环境)
执行make命令
出现 Hint: It's a good idea to run 'make test' ;则编译成功
4)执行完成后执行make install
安装完成后,redis的安装文件默认在:/usr/local/bin
5)复制redis.conf 到 /usr/local/redis中
6)修改redis.conf的配置文件
daemonize no (改为yes,可以在后台启动)
7.启动redis服务端,进入redis安装文件目录cd /usr/local/bin
./redis-server ./redis.conf
(redis-server启动时,会去redis.conf中读取配置信息)
8.启动redis客户端
./redis-cli -p 6379
(-p 6379指的是redis服务的端口号,默认为6379)
9.停止redis
在客户端中执行:shutdown
三、redis基本知识
1.redis是单进程的
2.默认16个数据库,类似下标从零开始:0-15
3.切换数据库:select 7(进入6号库)
4.dbsize查看当前数据库的key的数量
5.flushdb 清空当前数据库
6.flush 清空全部库
7.统一密码管理 16个库都是同样的密码
8.redis索引都是从0开始
四、Redis的数据类型
1.String:string是基本数据类型,一个redis字符串的value可以存储512M
2.hash:键值对集合,类似java的Map<String,Object>
3.list:一个字符串列表,按照插入顺序排序
4.set:集合
5.zset(sorted set:有序集合):每个元素都会关联一个double类型的分数,redis通过囧分数来为集合中的元素进行从小到大排序。其中元素是唯一的,但分数是可以重复的
五、Redis命令
1.keys:返回所有的键 keys *
2.exists:判断指定的键是否存在
3.del:删除指定的键
4.expire:设置一个key的过期时间 eg: expire name 10
5.move:移动键到指定的数据库 eg: move name 1
6.persist:移除指定key的过期时间
7.randomkey:随机返回key空间中的一个键
8.rename:重命名键
9.type:返回指定键其值得数据类型
.........
六、Redis持久化(RDB && AOF)
1.Redis的rdb
将redis的数据写入到dump.rdb文件中
1.1rdb的触发条件
1.1.1配置文件中的时间配置(redis.conf)
save 900 1 15分钟往redis中存一次数据
save 120 10 2分钟执行10次
save 60 10000 1分钟执行10000次
只要触发上面的时间段,将会把数据写入dum.rdb
1.1.2执行flushall,shutdown.
注意:flushall 是吧内存的数据写入到dump.rdb文件中,
1.1.3数据恢复
只需要把dump.rdb文件放在启动目录 启动redis即可
1.1.4save(同步阻塞式)或bgsave(异步非阻塞式)
使用save命令可以立即实现rdb备份
1-2.rdb使用场景:
1>大规模的数据备份
2>对数据的完整性和一致性要求不高
1-3.rdb的不足:
每次备份的时候都会生成一个与当前线程一样的线程,这样影响系统效率。
还有一点就是如果在备份的时候出现异常,那么最后一次的数据将丢失
AOF :是把你操作的命令 记录下来
2-1.开启appendonly
1>配置文件中加入: appendonly yes
2>动态修改:config set appendonly yes
3>配置文件加入: appendfilename appendonly.aof
注意:1.rdb与aof可以同时存在,服务器优先加载aof;如果aof文件损坏将无法启动服务器
2.aof文件修复: redis-check-aof --fix appendonly.aof
2.2 Appendfsync
always :同步持久化,每次发生数据变更会立即记录到磁盘,性能较差但数据完整性比较好
Everysec :出厂默认推荐,异步操作,每秒记录,如果一秒内宕机,有数据丢失
no
2-3.rewrite: aof文件的重写
aof文件采用的是追加方式,因此文件随着时间会变的很大;当aof文件的大小超过所设定的值时,redis就会启动aof文件进行压缩
该情况可以采用rewrite机制,对aof文件的数据
2-3.aof重写触发条件
默认是上一次rewrite之后的文件的一倍且容量大于64M
auto-aof-rewrite-percentage 100 -- 大于一倍
auto-aof-rewrite-min-size 64m --最小64m(生产过程中,一般大于64m(3G))
aof的文件通常大于rdb,恢复速度要慢于rdb
额。。。。。。。。
今天就先写到这里吧!记得关注哦!!!!
以上是关于NoSql之redis的简单介绍的主要内容,如果未能解决你的问题,请参考以下文章