1 什么是Redis
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
2 Redis Linux安装
2.1 下载路径 :https://redis.io/download
2.2 把下载好的文件上传到LINUX服务器上面 执行 tar -zxvf redis-5.0.3.tar.gz会生成一个redis5.0.3文件 然后进入cd redis5.0.3在此文件夹下面执行命令: make
2.3 等待make命令执行完成会生成一个src文件夹 进入src文件 有很多运行命令 启动命令用:redis-server & (后面加上&符号可以保证退出之后处于运行转态)测试命令用 ./redis-cli
3 Redis数据类型常用()
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
3.1 string 是 redis 最基本的类型,一个 key 对应一个 value。string 类型的值 最大能存储 512MB。
存储命令: set test "测试"
查看命令: get test
3.2 Redis hash 是一个 string 类型的 field 和 value 的映射表
存储命令: hmset test a1 "测试1" a2 "测试2" ; hmset test a1 "测试1"(可以设置过个值)
查看命令: hget test a1; hget test a2
3.3 Redis List列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
存储命令:lpush test1 a1;lpush test1 a2;lpush test1 a3;....
查看命令: lrange test1 0 4(从0开始取值取到4)
3.4 Redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
sadd 命令添加一个 string 元素到 key 对应的 set 集合中,成功返回1,如果元素已经在集合中返回 0,如果 key 对应的 set 不存在则返回错误。
存储命令:sadd t redis ....(不能存储相同的元素)
查看命令: smembers t
redis 127.0.0.1:6379> sadd t redis (integer) 1 redis 127.0.0.1:6379> sadd t mongodb (integer) 1 redis 127.0.0.1:6379> sadd t rabitmq (integer) 1 redis 127.0.0.1:6379> sadd t rabitmq (integer) 0 redis 127.0.0.1:6379> smembers t 1) "redis" 2) "rabitmq" 3) "mongodb"
2 Redis优缺势
1性能高 :因为是纯内存操作,Redis的性能非常出色,性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s (Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征)
2丰富的数据类型:Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
3支持原子性:Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
4 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
5 Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
3 Redis持久化(RDB,AOF)
RDB方式:是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复 RDB是默认开启。
优点 :使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能,恢复速度快
缺点 :RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。
AOF方式:将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部,在操作返回后(已经写入到文件或者即将写入), “日志文件”保存了历史所有的操作过程;当server需要数据恢复时,可以直接replay此日志文件,即可还原所有的操作过程。 AOF默认关闭
优点:可以保持数据的完整性,如果设置追加file的时间是1s,如果发生故障最多丢失1s的数据;且如果日志写入不完整支持redis-check-aof来进行日志修复;
缺点:AOF比RDB文件大,回复起来速度慢
4 redis常见性能问题和解决方案:
Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内