redis的特点
简单、高效、分布式的、基于内存的缓存工具。
- 性能极高
redis读的速度是110000次/s,写的速度是81000次/s - 丰富的数据类型
不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储。单个key存入512M大小。 - 原子性
Redis的所有操作都是原子性的,就是说要嘛成功执行要嘛失败完全不执行。单线程 原子性 - 持久化
- Redis将数据存储到内存中,按照一定规则把数据保存到磁盘上。实现持久化过程的两种方式:
a. 定时快照(snaphot):每隔一段时间将整个数据库写入磁盘上,每次均是写全部数据,代价非常高
b. 基于语句追加(aof):只追踪变化的数据,但是追加的log可能过大,同时所有的操作均重新执行一遍,回复速度慢。
在redis.conf 配置文件中指定多长时间内,有多少次更新操作,就将数据同步到数据文件
Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
- 支持集群
支持库(0~15)16个库
支持数据的备份,集群等高可用功能 - 可以作为消息队列
Redis内存维护策略
- 为数据设置超时时间
EXPIRE的使用 - 采用LRU算法动态将不用的数据删除
内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU并将其移除内存从而腾出空间加载另外的数据。
- volatile-lru:设定超时时间的数据中,删除最不常用的数据
- allkeys-lru:查询所有的key中最近最不常用的数据进行删除,这是应用最广泛的策略。
- volatile-random:在已经设定了超时的数据中随机删除.
- allkeys-random:查询所有的key,之后随机删除.
- volatile-ttl:查询全部设定超时时间的数据,之后排序,将马上将要过期的数据进行删除操作.
- noeviction:如果设置为该属性,则不会进行删除操作,如果内存溢出则报错返回.
• volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键
• allkeys-lfu:从所有键中驱逐使用频率最少的键
Redis启动
- 本地客户端登录
- 打开redis
redis-cli -a password
- 关闭redis
方法一: (断电、非正常关闭,容易丢失数据)
查询PID ps -ef | grep -i redis
kill -9 PID
方法二:正常关闭,数据保存
shutdown
exit

注意问题:(error) NOAUTH Authentication required.

意思是我们要输出密码才能用

参考1
网友评论