一,解决多台服务器的session共享问题,
-
使用缓存数据库,完全在内存中,速度快,数据结构简单。
-
减少IO的读操作。
二、NoSQL(Not Only SQL),不仅仅是sql,泛指非关系型数据库。
-
NoSQL不依赖业务逻辑方式存储,而以简单的key—value模式存储,因此大大的增加了数据库的扩展能力
-
不遵循SQL标准
-
不支持ACID (事务)
-
远超过SQL的性能
三、
NoSQL适用场景
-
对数据高并发的读写
-
海量数据的读写
-
对数据高可扩展性
不适用场景
-
需要事务支持
-
基于sql的结构化查询存储,处理复杂的关系,需要即席查询
四、Redis的特点
-
数据都在内存中,支持持久化,主要用作备份恢复
-
除了支持简单的key-value模式,还支持多种数据结构的存储,比如list、set、hash、zset等
-
一般是作为缓存数据库辅助持久化的数据库。
五、mongoDB 文档型数据库(虽然为key-value模式,但是对value(尤其是json)提供了丰富的查询功能)
六、Redis的应用场景
-
配合关系型数据库做高速缓存。
-
高频次,热门访问的数据,降低数据库IO。
-
分布式架构,做session共享
-
最新N个数据 通过List实现按自然时间排序的数据
-
排行榜,TOP N 利用ZSET(有序集合)
-
时效性的数据,比如手机验证码 Expire 过期
-
计数器 ,秒杀 原子性 自增方法INCR,DECR
-
去除大量数据中的重复数据 利用set集合
-
构建队列 利用list集合
-
发布订阅消息系统 pub/sub模式。
七、Redis 的端口号默认为6379,默认创建16个数据库,类似数组下标从0开始,初始默认使用0号数据库
使用 select <dbid> 来切换数据库 如:select 8.
八、Redis 五大数据类型
string
set
key + list
hash
zset
-
key
-
keys * 查询当前库的所有键
-
exists <key> 判断某个键是否存在
-
type <key> 判断键的类型
-
del <key> 删除某个键
-
expire <key> <seconds> 为键值设置过期时间,单位为秒
-
ttl <key> 查看还有多少秒过期, -1表示永不过期 -2表示已过期
-
dbsize 查看当前数据库的key的数量
-
Flushdb 清空当前库
-
Flushall 通杀全部库
-
-
String
-
String 是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
-
String 类型是二进制安全的,意味着Redis的String可以包含任何数据,比如JPG图片或者序列化的对象。
-
String类型是Redis最基本的数据类型,一个Redis中文字符串最多可以是512M.
-
常用命令
-
-
-
-
get <key> 查询对应键值
-
set <key> <value> 添加键值对
-
append <key> <value> 将给定的<value> 追加到原值的末尾
-
strlen <key> 获取值的长度
-
setnx <key> <value> 只有在key不存在时设置key的值
-
incr <key> 将key中存储的数字值增1 只能对数字值操作,如果为空,新增值为1
-
decr <key> 将key中存储的数字值减1 只能对数字值操作,如果为空,新增值为-1
-
incrby/decrby <key> <步长> 将key中存储的数字值增减,自定义步长。
-
mset <key1> <value1> <key2> <value> 同时设置一个或多个key-value对
-
mget <key1> <key2> <key3> 同时获取一个或多个value
-
msetnx <key1> <value1> <key2> <value2> 同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
-
getrange <key> <起始位置> <结束位置> 获取值得范围,类似java中的substring
-
setrange <key> <起始位置> <value> 用 <value> 覆写<key> 所储存的字符串值,从<起始位置>开始
-
setex key 过期时间 value 设置键值的同时设置过期时间 单位秒
-
getset key value 以新换旧 设置了新值的同时获得旧值
-
-
-
开启redis服务
-
redis-server /myredis/redis.conf 指定配置文件
-
redis-cli
-
-