赞
踩
Redis
NoSQL
NoSQL,泛指非关系型的数据库。随着互联网 web2.0 网站的兴起,传统的关系数据库
在处理 web2.0 网站,特别是超大规模和高并发的社区,暴露出来很多难克制的问题,NoSQL
Redis 是发展最快的,而且是我们目前必须要掌握的
一个技术
关系型数据库:表格,行,列
非关系型数据库:键值对 Map<String,Object>
NoSQL特点
1 解耦
2 方便扩展(数据之间没有关系,非常容易扩展)
3 大数据量高性能(Redis 一秒可以写 8 万数据,读取 11 万数据)
4 数据类型是多样型的,5 种常用,3 种特色(不需要事先设计数据库,随取随用)
5 传统 RDBMS 和 NoSQL 的区别
也就是关系型和非关系型数据库的区别
NoSQL四大分类
KV键值对
文档型数据库(bson格式,和json一样)
列存储数据库
图形关系数据库
解决应用场景
通过反射创建对象
通过反射获取设置属性
通过反射调用方法
经典应用场景
做高速缓存
发布订阅模式
分布式锁,共享session
Redis的安装和使用
○ 安装
参考之前linux文档进行安装
使用
修改配置
bind 设置redis可以通过远程连接,默认只能localhost连接
port 指定端口号,使用默认即可(当端口冲突的时候需要修改)
daemonize: 设置为yes代表可以后台启动
requirepass: 指定密码 redis 默认是保护模式,只有配置了密码才能远程连接
在redis安装目录下启动 redis-server redis.conf
连接redis
redis-cli进行连接
auth 密码 进行权限校验
keys * 查看所有的key
基础操作
select 选库
set key value 设置值
get key 获取值
del key 删除key
flushdb 清空当前库
flushall 清空所有库
expire key seconds 设置key的过期时间
ttl key 查看剩余时间
○ Redis五大基础数据类型
String
set
get
del
setex key expire value 设置kv并指定过期时间
setnx key value 设置如果key不存在则添加
getrange key start stop 获取指定返回的内容
strlen key 获取长度
List
lpush key elements 左侧插入即头部插入
rpush key elements 右侧插入即尾部插入
lrange key start stop 查看指定索引范围的内容
lpop / rpop 出栈
lrem key count element 删除指定个数的element元素
ltrim key start stop 截取数组指定范围的内容
llen key 查看数组的长度
rpoplpush source target source尾部出栈target头部入栈
lset key index value 设置指定索引的值
linsert key before/after element value 在指定元素前后添加内容
Set
sadd key value
smembers key 查看所有成员
sismemeber key element 判断是否是成员
srem 删除
srandmemeber 随机获取一个成员
spop 随机出栈
sdiff 求差
sinter 求交集
sunion 求并集
Hash
hset key field value 设置元素
hget key field 获取元素
hgetall key 获取所有
hdel key field 删除元素
hlen key field 获取长度
hkeys 获取所有的key
hvals 获取所有的val
hsetnx 如果不存在设置,存在就忽略
hincrby += 整数型
hincrbyfloat += 浮点型
ZSet(对应的有排序的set)
除了基础的元素之外增加了一个score的字段,默认按照score进行排序
zadd key score element 添加元素
zrange key min max 查看指定排名范围数据。(默认按照分数从小到大)
zrevrange key max min查看指定排名范围数据。(按照分数从大到小)
zrem 删除
zrank key element 获取排名
zrevrank key element 获取逆序排名
zrangebyscore 获取指定得分范围
zrevrangebyscore 获取指定得分范围(逆序)
redis持久化问题
RDB
默认的一种方式
fork了一个子线程,又子线程定期同步主线程的数据,保存到本地形成文件
优点
对主线程的IO 没有影响,所有针对redis的读写性能不会被影响
做备份和恢复的时候效率是比较高的,非常适合做大量数据的备份
缺点
数据可能会存在丢失,如果对于数据要求严格尽量不要使用这种
fork了一个线程 内存占用翻倍
怎么使用
redis默认开启该模式
可以配置dump的文件的名字和位置
dump_test.rdb
dir ./
如何主动触发保存
save:阻塞之后保存
bgsave:不阻塞保存
如何恢复备份
只需把dump.rdb放到指定位置即可
AOF
通过追加set日志的方式,进行持久化,恢复的时候按照日志执行即可完成恢复
优点
数据比较完整
缺点
日志文件过大
备份和恢复速度慢
rewrite机制
当文件过大的时候,会对aof进行文加压缩,只保留最小能恢复的文件大小
应用场景
对数据完成性要求高,性能没那么高要求的时候
怎么使用
开启AOF配置即可
appendonly yes
appendfilename "appendonly.aof"
删除机制
计时器
为每一个key启动一个计时器,到点删除
CPU占用大,用时间换空间
惰性删除
访问这个key的时候才判断有没有过期,对过期的删除
占用内存大,用空间换时间
定期删除
每秒执行hz次删除
删除的时候是逐个库删除
并不是完全删除,是抽样删除,抽样之后过期内存占用小于25%停止
淘汰逐出机制
如果内存满了怎么处理
分类
淘汰很久没用过的key
淘汰使用频率最低的key
淘汰即将过期的key
随机淘汰
怎么使用
在配置中使用最大内存
指定淘汰策略
主备模式
哨兵模式
集群搭建
常见集群架构
master/slave
去中心化
总结重点
redis概述
安装和基本配置
五大数据类型
持久化
rdb和aof
jedis
了解删除和淘汰机制
redis主备模式
一主二从
薪火相传
反客为主
哨兵模式
集群搭建
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。