一、什么是redis
redis是一种nosql的非关系型数据库,一般它的数据格式为key,value。其中,key一般用字符串表示。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
二、为什么用redis
一般而言,我们日常中常用的关系型数据库,如mysql,Oracle等。它们的数据基本都是存储在硬盘上的,而且数据与数据之间是有关联的。因此,我如果要读取硬盘上的文件,就需要用到io流等操作。如果遇到数据量大时,此时读写速率就成了一个问题。为了解决这个问题,我们需要引入redis。将数据存储到内存中去。
一般而言,它具有以下特点:
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
三、nosql与关系数据库的区别
- 学习成本不一样,关系型数据库有严格的sql规范,因此,学会一个就很容易上手另一个
- 关系型数据库需要花钱,而nosql则是免费使用的。
- 读写速度方面差别大
- 数据之间有无关联
其实,nosql与关系型数据库之间是互补关系。
一般将数据存到关系型数据库,再将数据备份到nosql数据库。
四、应用场景
- 缓存
- 聊天室的好友列表
- 任务队列
- 应用排行榜
- 网站访问统计
- 数据过期处理
- 分布式集群架构中的sessIon分离
数据类型
- 列表类型 list:简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)
存储
1.lpush key value :从左边存入列表;2.rpush key value : 从右边存入列表
获取
lrange key start end 范围获取
删除
1.lpop key value 从列表的最左边移除一个元素,并将元素返回;2.rpop key value 从列表的最右边移除一个元素,并将元素 返回
- 集合类型 set: 不予许重复元素
存储 sadd key value
获取 smembers key 获取set集合中所有元素
删除 srem key value 删除set集合中某个元素
- 有序集合类型 sortedset: 不允许重复元素,且元素有顺序
存储 zadd key score value;
获取 zrange key start end
删除 zrem key value
通用命令
1.key *: 查询所有的键
2.type key : 获取对应的value 的类型
3.del key:删除指定的key
五、持久化
1.redis是一个内存数据库,当redis服务器重启,或者电脑重启时,数据会丢失,我们可以将内存中的数据保存到硬盘中。
2. redis 持久化机制
1. RDB:默认方式,不需要进行配置,默认使用这种机制
在一定的间隔时间中,检测key的变化情况,然后持久化数据
1.编辑redis.window.conf文件
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
2.重新启动redis服务器,并指定配置文件名称
在redis的安装目录中,执行redis-server.exe redis.windows.conf
2.AOF: 日志记录的方式,可以记录每一条命令的操作,额可以每一次命令操作后,持久化操作。
1.编辑redis.windows.conf文件
appendonly no(关闭aof) 改成 appendoniy yes(开启aof)
# appendfsync always 每个一次操作开始持久化
appendfsync everysec 每隔一秒操作一次
# appendfsync no 不进行持久化