概述
NoSQL泛指非关系型数据库,采用区别于非关系型数据库的设计.主要针对关系型数据库的缺陷来设计.
- 键值存储:Redis多用于项目的高速缓存
- 文档存储:MongoDB多用于社交类型的应用
- 文件存储: FastDFS 多用于以文件为载体的在线服务,如相册网站/视频网站等等
- 列式存储: HBase 主要用于数据分析领域
Redis的数据结构
Redis属于键值存储的NoSQL数据库.一个极其高性能的超大map
缺陷:
- Redis中事务只有同时成功,没有同时失败.
- 没有表的概念和表相关的操作
- 单线程执行,没有并发的线程安全问题
五大数据类型
- string
- hash
- list
- set
- zset
特点
- 性能高,能高达10w次读/s,8w次写/s
- 具有比较简单的acid
- 单线程,每个操作都是原子操作,acid
Redis支持的数据类型
string类型
| 命令 | 作用 |
|---|---|
| set key value | 存入键值对 |
| get key | 根据键取出值 |
| getset key value | 返回旧值后存入新值 |
| incr key | 把值递增1 |
| decr key | 把值递减1 |
| incrby key num | 偏移值 |
| append key ‘value’ | 在原值后拼接新内容 |
| setnx key value | 存入键值对,键存在时不存入 |
| setex key timeout value | 存入键值对,timeout表示失效时间,单位s |
| setrange key index value | 存入键值对,timeout表示失效时间,单位s |
| setex key timeout value | 批量存入键值对 |
| setex key timeout value | 批量取出键值 |
| del key | 批量取出键值 |
hash类型
| 命令 | 作用 |
|---|---|
| hset key hashkey hashvalue | 存入一个hash对象 |
| hget key hashkey | 根据hash对象键去取值 |
| hincrby key hashkey | 递增值,递增hashkey对应的值 |
| hexists key hashkey | 判断hash对象是含有某个键 |
| hlen key | 获取hash对象键的数量 |
| hkeys key | 获取hash对象的所有键 |
| hvals key | 获取hash对象的所有值 |
| hgetall key | 获取hash对象的所有数据 |
| hdel key hashkey | 根据hashkey删除hash对象键值对 |
同样有hsetnx,其作用跟用法和setnx一样
list类型
| 命令 | 作用 |
|---|---|
| rpush key value | 往列表右边添加数据 |
| lpush key value | 往列表左边添加数据 |
| lpop key value | 弹出列表左边的数据 |
| rpop key value | 弹出列表右边的数据 |
| lrange key start end | 范围显示列表数据,全显示则设置0 -1 |
| linsert key before/after refVal newVal | 参考值之前/之后插入数据 |
| lset key index value | 根据索引修改数据 |
| lrem key count value | 在列表中按照个数删除数据 |
| ltrim key start end | 范围截取列表 |
| lindex key index | 范围截取列表 |
| ltrim key start end | 范围截取列表 |
set类型
| 命令 | 作用 |
|---|---|
| sadd key value | 往set集合中添加元素 |
| smembers key | 列出set集合中的元素 |
| srem key value | 删除set集合中的元素 |
| spop key count | 随机弹出集合中的元素 |
| sdiff key1 key2 | 返回key1中特有元素 |
| sdiffstore var key1 key2 | 返回key1中特有的元素存入另一个set集合 |
| sinter key1 key2 | 返回两个set集合的交集 |
| sinterstore var key1 key2 | 返回两个set集合的交集存入另一个set集合 |
| sunion key1 key2 | 返回两个set集合的并集 |
| sunionstore var key1 key2 | 返回两个set集合的并集并存入另一个set集合 |
| smove key1 key2 value | 把key1中的某元素移入key2中 |
| scard key | 返回两个set集合的并集 |
| sismember key value | 返回两个set集合的并集 |
| srandmember key count | 随机获取set集合中的元素 |
zset类型
| 命令 | 作用 |
|---|---|
| zadd key num name | 存入数值和名称 |
| zrange key start end | 按照数值升序输出名称 |
| zrangebyscore key min max [withscore] | 按照数值范围降序输出名称 |
| zrem key name | 删除名称和数值 |
| zincrby key num name | 偏移名称对应的数值 |
| zrank key name | 升序返回排名 |
| zrevrank key name | 降序返回排名 |
| zremrangebyscore key min max [withscores] | 根据分数范围删除元素 |
| zremrangebyrank key start end | 根据排名删除元素 |
| zremrangebyrank key start end | 根据排名删除元素 |
| zremrangebyrank key start end | 根据排名删除元素 |
Redis的管理命令
| 命令 | 作用 |
|---|---|
| exists key | 判断某个key是否存在 |
| expire key | 设置key的过期时间 |
| persist key | 取消key的过期时间 |
| select index | 切换数据库索引,范围是0 ~ 15共16个分区 |
| move oldkey newkey | 把oldkey重命名为newkey |
| info | 查看当前服务器信息 |
| flushdb | 清空当前库中的数据 |
| flushall | 清空所有库中的数据 |
Redis缓存
1 | //业务层方法 |
Redis集群模式

哨兵模式,如果发现master宕机,就会在剩下的服务器中,通过选举算法选择其他服务器
