- NoSQL的概述
- Redis的概述
- Redis的安装和使用
- Jedis的入门
- Redis的数据类型
- Keys的通用操作
- Redis的特性
- Redis的持久化
第一章 NoSQL概述
为什么需要NoSQL
- High performance - 高并发读写
- Huge Storage - 海量数据的高效率存储和访问
- High Scalability && High Availablility - 高可扩展性和高可用性
NoSQL数据库的四大分类
- 键值(Key-Value)存储
- 列存储
- 文档数据库
- 图形数据库
NoSQL的特点
- 易扩展
- 灵动的数据模型
- 大数据量,高性能
- 高可用
第二章 Redis概述
Redis的由来
- 高性能键值对数据库,支持的键值数据类型:
- 字符串类型
- 列表类型
- 有序集合类型
- 散列类型
- 集合类型
Redis的应用场景
- 缓存
- 任务队列
- 网站访问统计
- 数据过期处理
- 分布式集群架构中的session分离
第三章 Resdis的安装
https://www.runoob.com/redis/redis-install.html
第四章 Jedis入门
Jedis介绍
Jedis是Reids官方首选的Java客户端开发包
https://github.com/xetorhio/jedis
第五章Redis的数据结构
Key定义的注意点
- 不要过长
- 不要过短
- 统一的命名规范
存储String
- 二进制安全的,存入和获取的数据相同
- Value最多可以容纳的数据长度是512M
存储Sting常用命令:
赋值
set key value
取值
get key
删除
del key
数值增减
incr num //增 decr num //减
扩展命令
incrby key 5 //增5 decrby key 5 //减5 append key value 追加(相当于字符串拼接)
存储Hash
- String key和String Value的map容器
- 每一个Hash可以存储4294967295个键值对
存储Hash常用命令:
赋值
hset key1 key value hmset key1 key value key value
取值
hget key1 key hmget key1 key2 key3 hgetall key
删除
hdel key1 key2 key 3 del key
添加数字
hincrby key1 key2
自学命令
hexists key1 key2 //存在返回1不存在返回0 hlen key //获取属性个数 hkeys key //获取所有key hvals key //获取所有value
存储list
- ArrayList使用数组方式
- LinkedList使用双向链接方式
- 双向链表中添加数据
- 双向链表中删除数据
存储list常用命令:
两端添加
lpush key value1 value2 value3 //向左侧添加数据 rpush key value1 value2 value3 //向右侧添加数据
查看列表
lrange key start end //查看元素
两端弹出
lpop key //弹出左侧一个元素(之前的数据就没了) rpop key //弹出右侧一个元素(之前的数据就没了)
获取列表元素个数
llen key
扩展命令
lpushx key //插入存在链表的头部添加元素,不存在不插入 rpushx key //尾部 lrem key //删除元素
存储Set
- 和List类型不同的是,Set集合中不允许出现重复的元素
- Set可包含的最大元素数量是4294967295
存储set常用命令:
添加/删除元素
SADD key member1 [member2] //向集合添加一个或多个成员
获取集合中的元素
SCARD key // 获取集合的成员数 SMEMBERS key 返回集合中的所有成员
集合中的差集运算
SDIFF key1 [key2] //返回给定所有集合的差集 SDIFFSTORE destination key1 [key2] //返回给定所有集合的差集并存储在 destination 中
集合中的交集运算
SINTER key1 [key2] //返回给定所有集合的交集 SINTERSTORE destination key1 [key2] //返回给定所有集合的交集并存储在 destination 中
集合中的并集运算
SUNION key1 [key2] //返回所有给定集合的并集 SUNIONSTORE destination key1 [key2] //所有给定集合的并集存储在 destination 集合中
扩展命令
SISMEMBER key member //判断 member 元素是否是集合 key 的成员 SMOVE source destination member //将 member 元素从 source 集合移动到 destination 集 SPOP key //移除并返回集合中的一个随机元素 SRANDMEMBER key [count] //返回集合中一个或多个随机数 SREM key member1 [member2] //移除集合中一个或多个成员
存储Set使用场景
- 跟踪一些唯一性数据
- 用于维护数据对象直接的关联关系
存储Sorted-Set
- Sorted-Set和Set的区别
- Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-Set常用命令:
添加元素
ZADD key score1 member1 [score2 member2] //向有序集合添加一个或多个成员,或者更新已存在成员的分数
获得元素
ZCARD key //获取有序集合的成员数
删除元素
ZREM key member [member ...] //移除有序集合中的一个或多个成 ZREMRANGEBYLEX key min max //移除有序集合中给定的字典区间的所有成员 ZREMRANGEBYRANK key start stop //移除有序集合中给定的排名区间的所有成员 ZREMRANGEBYSCORE key min max //移除有序集合中给定的分数区间的所有成员
范围查询
ZLEXCOUNT key min max //在有序集合中计算指定字典区间内成员数量 ZRANGE key start stop [WITHSCORES] //通过索引区间返回有序集合成指定区间内的成员 ZRANGEBYLEX key min max [LIMIT offset count] //通过字典区间返回有序集合的成员 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] //通过分数返回有序集合指定区间内的成员
扩展命令
ZINCRBY key increment member //有序集合中对指定成员的分数加上增量 incremen ZSCORE key member //返回有序集中,成员的分数值 ZUNIONSTORE destination numkeys key [key ...] //计算给定的一个或多个有序集的并集,并存储在新的 key 中
Sorted-Set使用场景
- 如大型在线游戏jifen排行榜
- 构建索引数据
第六章 Keys的通用操作
Redis事务
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
第七章 Redis持久化
两种持久化方式
RDB方式
RDB:每次进行快照方式会重新记录整个数据集的所有信息。RDB在恢复数据时更快,可以最大化redis性能,子进程对父进程无任何性能影响。
在RDB方式下,你有两种选择,一种是手动执行持久化数据命令来让redis进行一次数据快照,另一种则是根据你所配置的配置文件 的 策略,达到策略的某些条件时来自动持久化数据。而手动执行持久化命令,你依然有两种选择,那就是save命令和bgsave命令。
AOF方式
AOF:有序的记录了redis的命令操作。意外情况下数据丢失甚少。他不断地对aof文件添加操作日志记录
配置文件中的appendonly修改为yes。开启AOF持久化后,你所执行的每一条指令,都会被记录到appendonly.aof文件中。但事实上,并不会立即将命令写入到硬盘文件中,而是写入到硬盘缓存,在接下来的策略中,配置多久来从硬盘缓存写入到硬盘文件。所以在一定程度一定条件下,还是会有数据丢失,不过你可以大大减少数据损失。
(完)
java经验总结