什么是NoSql
- not only sql
为什么需要NoSql
- High performance - 高并发读写
- Huge Storage - 海量数据的高效率存储和访问
- High Scalability&&High Availability - 高扩展性和高可用性
NoSQL数据库的四大分类
- redis:key/value键值对存储数据库
- mongodb:文档型数据库
- hbase:列式数据库
- Graph:图数据库
NoSQL的特点
- 易扩展
- 灵活的数据模型
- 大数据量,高性能
- 高可用
redis概述
高性能键值对数据库,支持的键值数据类型:
- 字符串类型(String)
- 哈希(hash)
- 字符串列表(List)
- 字符串集合(set)
- 有序字符串集合(sorted set)
Key定义的注意点
- 不要过长
- 不要过短
- 统一命名规范
存储String的常用命令
赋值
set key value
取值
get key
getset key newvalue
删除
del key
数值增减
/增
incr key
/减
decr key
扩展命令
incrby key number 增加number
decrby key number 减去number
append key value 追加字符串
存储Hash的常用命令
赋值
hset key k-v
hmset key
取值
hget key k
hm key k k
hgetall key
删除
lrem key count value count正负代表遍历方向值代表删除个数 0为所有
扩展命令
hincrby key k number 增加number
decrby key k number 减去number
hexists key k 是否存在 1;0
hlen key
hkeys key
hvals key
存储list的常用命令
赋值
两端添加
lpush key value value value 左添加
rpush key value value value 右添加
某一个位置添加指定元素
lset key index value
linsert key before/after value value
取值
lrange key beginIndex endIndex
两端弹出
lpop key 左弹出
rpop key 右弹出
获取list长度
llen key
删除
del key
数值增减
/增
incr key
/减
decr key
扩展命令
lpushx key value 存在才插入
rpoplpush key1 key2 将前一个的队尾插入第二个队头
存储Set的常用命令
添加元素
sadd key value1 value2 value3
删除元素
srem key vaue1 value2
查看元素
smembers key
判断元素值是否在集合里
sysmember key value
差集运算
sdiff key1 key2
交集运算
sinter key1 ley2
并集运算
sunion key1 key2
获得集合成员数量
scard key
随机获得成员
srandmember key
差集存储
sdiffstore newkey key1 key2
存储Sorted-Set的常用命令
添加元素
zadd key score1 value1 score2 value2 score1 value3
删除元素
zrem key vaue1 value2
zremrangebyrank key beginIndex endIndex
zremrangebyscore key lowScore highCore
查看元素
zscore key value
zcard key
范围查找
zrange key beginIndex endIndex
zrange key beginIndex endIndex withscores
zrevrange key beginIndex endIndex withscores
扩展命令
zincrby key number value
zcount key lowScore highScore
redis的应用场景
- 缓存
- 任务队列
- 网站访问统计
- 数据过期处理
- 应用排行榜
- 分布式集群架构中的读写分离
redis的安装
启动服务:./bin/redis-server ./redis.conf
停止命令:./redis-cli - 127.0.0.1 -p 6379 shutdown
redis特性
多数据库
select 0-15
move key databaseIndex
支持事物操作
multi 开启事物
exec 提交
discard 回滚
Redis持久化
持久化使用的方式
1:RDB持久化
在指定的时间间隔内将数据集快照
优势:
单文件,易备份,易恢复
劣势:
数据大可能造成系统延迟
2:AOF持久化
以日志的形式
优势:
数据安全性更高 每s同步 每修改同步(效率最低,但是最安全)
格式清晰,易于理解的日志文件
劣势:
占用空间大,运行效率低于RDB
flush all 清空数据库
3:同时使用RDB和AOF