redis的介绍
redis就是一款高性能的NOSQL.
因为NOSQL数据的修改是在内存中而不是在硬盘上, 所以NOSQL相比于关系型数据库来说, 数据查询更快, 性能更高, 但只适合储存少量数据, 不适合储存大量数据.
所以项目开发一般将NOSQL和关系型数据库结合使用, NOSQL存储经常需要访问的数据, 而其他的数据交给关系型数据库解决.
(后端获取这些数据时, 会先到NOSQL的内存中去获取, 获取不到才到关系型数据库去获取, 并将数据存放到redis, 以便后续的效率)
当然这些数据不能一直放在内存, 如果服务器炸了数据就没了, 所以要将这些数据定期的存到硬盘上, 这种技术即为数据的持久化技术.
redis存储的数据的特点
不是很重要, 轻量, 更新频率低, 经常存放的是热点数据.
redis的应用场景
- 缓存 (数据查询,短连接,新闻内容,商品内容)
- 聊天室的在线好友列表
- 任务队列 (秒杀,抢购,12306等)
- 排行榜
- 网站访问统计, 点赞数
- 数据过期处理 (可以精确到毫秒)
- 分布式集群架构中的session分离
redis的使用
- redis.windows.conf文件是配置文件
- redis-server.exe是开启服务
- redis-cli.exe是开启用户命令行窗口, 用于redis的增删改查
- dump.rdb是redis用RDB方式持久化在硬盘上的数据库文件
数据结构
键值对, 下面几种是值的数据类型
- string
- hashMap
- list
- set (无序,元素不能重复)
- sortedSet
命令操作
- 通用命令
- keys * 获取所有的键 (*可以换成正则表达式)
- type key, 如 type username 结果为 string, 获取key的类型
- del keu, 如 del myHashMap, 不管什么类型都能删
- string类型
- 存储: set key value, 如 set username juln
- 获取: get key, 如 get username
- 删除: del key
- hashMap类型
- 存储(无hashMap则创建): hset key field value, 如 hset user username juln, hset user password 123
- 获取单条: hget key field
- 获取全部: hgetall key
- 删除单条: hdel key field
- list类型
- 从list左边插入元素(无list则创建): lpush key item, 如 lpush users juln
- 从list右边插入元素: rpush key item
- 获取元素: lrange key start end, 如 lrange users 0 -1
- 从左边删除元素, 并返回该元素的值: lpop key, 如 lpop users
- 从右边删除元素, 并返回该元素的值: rpop key
- set类型
- 存储单个元素(无set则创建): sadd key item, 如 sadd users juln
- 存储多个元素(无set则创建): sadd key item1 item2 item3 …, 如 sadd users juln efef shuaige
- 获取所有元素: smembers key, 如 smembers users
- 删除单个元素: srem key item, 如 srem users juln
- sortedSet类型 (按score的大小来排序)
- 存储(无sortedSet则创建): zadd key score item, 如 zadd users 100 juln
- 修改排序: 比如 已经运行过 zadd users 100 juln, 再运行 zadd users 0 juln 就可以修改排序
- 获取: zrange key start end, 如 zrange users 0 -1
- 连同score一起获取: zrange key start end withscores, 如 zrange users 0 -1 withscores
- 删除: zrem key item, 如 zrem users juln
redis的持久化机制
-
RDB持久化方式 (redis的默认方式)
- 在一定的间隔时间中, 检测key的变化情况, 然后持久化数据
- RDB持久化后的文件名后缀为 .rdb
- 下图的意思是: 若900ms内有1条数据被修改, 则持久化一次; 若300ms内有10条数据被修改, 则持久化一次; 若60ms内有10000条数据被修改, 则持久化一次. (修改完配置之后, 不能直接redis-server.exe, 必须在cmd中执行 redis-server.exe redis.windows.conf才能生效)
-
AOF持久化方式
- 日志记录的方式, 可以记录每条命令的操作. 命令一执行就持久化数据
- AOF持久化后的文件名后缀为 .aof
- 将下图的no改成yes, 即可开启AOF模式
下图为AOF模式的三种选择
always: 即每次操作完数据都持久化
everysec: 开启AOF后默认为everysec, 每隔一秒进行一次持久化
no: 即不进行持久化