Redis入门
Redis入门
NoSQL的诞生
- Not Only SQL
- 高并发读写问题
- 海量数据的高效率存储与访问问题
- 高拓展性和高可用性问题
NoSQL分类
- 键值存储:能够快速查询,但是缺少结构化
- 列存储:能快速查找,但是功能太局限了
- 文档数据库:数据结构要求不严格
- 图形数据库:一般社交网络使用较多
NoSQL的特点
- 易拓展
- 大数据量、高性能
- 灵活的数据结构
- 高可用
Redis的诞生
- 高性能键值对数据库,支持键值对数据结构
Redis的应用场景
- 缓存
- 任务队列
- 网站访问统计
- 数据过去处理
- 分布式集群架构中session的分离
Redis的数据结构
String类型
- 存储方式
- 二进制形式,存入和获取的数据相同
- 最多可容纳的数据长度是512M
- 命令
- 赋值命令:set key value
- 取值命令:get key
- 删除命令:del key
- 数值增减:incr key/decr key
- 拓展命令:
- incrby key increment //增加increment
- decrby key decrement //减少decrement
- append key appendence //追加
Hash类型
- 存储方式
- String Key和String Value的map容器
- 每个Hash可以存储4294967295个键值对
- 命令
- 赋值命令:
- hset map key value
- hmset map key value [key value]
- 取值命令
- hget map key
- hmget map key [key]
- hgetall map
- 删除命令
- hdel map key [key]
- del map
- 增减数值
- hincrby map key increment
- hdecrby map key decrement
- 拓展命令
- hexists map key
- hlen map
- hkeys map
- hvals map
List类型
- 存储方式
- ArrayList式List
- LinkedList式List
- 命令
- 两端添加
- lpush list value [value]//从左边添加
- rpush list value [value]//从右边添加
- 遍历列表
- lrange list start end
- 两端弹出
- lpop list
- rpop list
- 拓展命令
- llen list
- lset list index value
- linsert list before|after value newvalue
- rpoplpush list1 list2
Set类型
- 存储方式
- 没有排序的,不允许出现重复元素的List
- 命令
- 增删命令
- sadd set value [value]
- srem set value [value]
- 获取元素命令
- smembers set
- sismember set value //判断是否为集合的元素
- 交并差运算命令
- sdiff set1 set2 //求差集运算
- sinter set1 set2 //求交集运算
- sunion set1 set2 //求并集运算
- 拓展命令
- scard set //求集合元素个数
- srandmember set //随机返回集合中的一个元素
- sdiffstore newset set1 set2
- sinterstore newset set1 set2
- sunionstore newset set1 set2
- 适用场景
- 跟踪一些唯一性的数据
- 用于维护数据对象之间的关系
Sorted Set类型
- 存储方式
- 成员位置有排序的Set
- 命令
- 增删命令
- zadd set score key [score key]
- zrem set key
- zremrangebyrank set start end //删除排名范围内
- 获取元素
- zscore set key //返回得分
- zcard set //返回元素个数
- 范围查询
- zrange set start end withscores
- zrevrange set start end
- 适用场景
- 在线游戏排名
- 构建索引数据
Redis中Keys的基本操作
- keys * //查询所有的键
- del key
- exists key
- get key
- rename key newkey
- expire key time //设置过期时间
- ttl key //查看还有多久过期
- type key //查看key种类
- flushdb //清空当前数据库
Redis特性
- 多数据库
- 共16个数据库,默认连接第0号数据库
- select 数据库号
- move key 数据库号//将当前数据库中的某个key迁移到新数据库
- 事务
- multi:开启事务
- exec:提交事务
- discard:回滚==rollback
关于Redis持久化的问题
- 将数据从内存同步到硬盘上
- 方式
- RDB方式:在指定时间内,将数据写入磁盘一次
- 优势
- 备份:数据库只包含一个文件
- 性能最大化:极大的避免了服务器执行IO操作
- 启动效率更好
- 劣势
- 难以保证数据的高可用性
- 当服务器数据集很大时,有可能会导致服务器停止几百毫秒
- AOF方式:以日志的形式,记录服务器的变化
- 优势
- 更高的数据安全性
- 对日志的写入采用追加模式,即使宕机,影响也不大
- 日志过大时,Redis可以自动重启重写机制
- 劣势
- AOF文件要比RDB文件更大一些
- 根据同步策略不同,AOF在效率上往往低于RDB
小结
Redis入门的一些小知识,理解很重要,但是更重要的是要去动手操作,去敲打这些命令。了解了这些之后,接下来如何使用程序去操作Redis就是核心了!