Redis学习总结

1 关系型数据库和非关系型数据库

1.1 关系型数据库

代表:MySQL、Oracle
特点:数据和数据之间、表和字段之间、表和表之间存在关系
优点:

  1. 数据间有关系,增删改查非常方便
  2. 事务操作,保证数据完整性

缺点:

  1. 关系由底层大量算法保证,拉低系统运行速度、消耗系统资源
  2. 海量数据增删改查/维护/扩展显得无能为力
1.1 非关系型数据库
  1. 键值(Key-Value)存储数据库:Redis
    典型应用: 内容缓存,主要用于处理大量数据的高访问负载
    数据模型: 一系列键值对
    优势: 快速查询
    劣势: 存储的数据缺少结构化
  2. 列存储数据库:HBase
    典型应用:分布式的文件系统
    数据模型:以列簇式存储,将同一列数据存在一起
    优势:查找速度快,可扩展性强,更容易进行分布式扩展
    劣势:功能相对局限
  3. 文档型数据库:MongoDB
    典型应用:Web应用(与Key-Value类似,Value是结构化的)
    数据模型: 一系列键值对
    优势:数据结构要求不严格
    劣势: 查询性能不高,而且缺乏统一的查询语法
  4. 图形(Graph)数据库:Neo4J
    典型应用:社交网络
    数据模型:图结构
    优势:利用图结构相关算法。
    劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案

1.2 什么是Redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,目前为止Redis支持的键值数据类型如下:

  • 字符串类型 string
  • 散列类型 hash
  • 列表类型 list
  • 集合类型 set
  • 有序集合类型 sortedset

1.3 Redis的安装和启动

redis官网安装步骤如下:


执行make编译之后可通过 make PREFIX=/XXX/XXX/redis install安装到指定目录

启动
  1. 前端启动(无法部署集群)
  2. 后端启动
    将redis.conf文件复制到安装目录下
    修改daemonize nodaemonize yes启动后端模式
    按配置文件启动:./bin/redis-server ./redis.conf
    客户端连接:./bin/redis-cli -h host -p prot

2 Redis的数据类型和常用命令

2.1 string

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型存入和获取的数据相同。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
常用命令:

  • set key value如果该key存在则进行覆盖操作。返回”OK”
  • get key返回value;如果该key不存在,返回(nil)。
  • del key删除指定key
  • getset key value先获取该值,再设置该值
  • incr keyvalue加一,如果key不存在,初始值为0
  • decr keyvalue减一,如果key不存在,初始值为0
  • append key value拼凑字符串
  • mset key value [key value …]设置多个值
  • mget key [key ...]获取多个值

使用环境: 保存json格式字符串

2.2 hash

hash类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息
常用命令:

  • hset key field value为指定的key设定field/value对(键值对)。
  • hget key field返回指定的key中的field的值
  • hdel key field [field … ]可以删除一个或多个字段,返回值是被删除的字段个数
2.3 list

List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除
常用命令:

  • lpush key values[value1 value2…]在指定的key所关联的list的头部插入所有的values,如果该key不存在,创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数
  • lpop key返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素
  • rpop key从尾部弹出元素。
2.4 set

在Redis中,我们可以将set类型看作为没有排序的字符集合,set集合中不允许出现重复的元素
常用命令:

  • sadd key values[value1、value2…]向set中添加数据,如果该key的值已有则不会重复添加
  • smembers key获取set中所有的成员
  • srem key members[member1、member2…]删除set中指定的成员
其他命令
  • keys pattern获取所有与pattern匹配的key,返回所有与该key匹配的keys。*表示任意一个或多个字符,?表示任意一个字符
  • del key1 key2…删除指定的key
  • exists key判断该key是否存在,1代表存在,0代表不存在
  • type key获取指定key的类型。该命令将以字符串的格式返回。 返回的字符串为string、list、set、hash、zset,如果key不存在返回none
  • flushdb清空数据库

更多命令请看http://doc.redisfans.com/

3 持久化

Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式

3.1 RDB持久化

RDB持久化(默认支持,无需配置)机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘
优点: 快照保存和还原数据极快,适用于灾难恢复
缺点:随时启动,占用系统资源,可能造成内存不足而宕机

适用于内存比较充裕的计算机
何时照快照

3.2 AOF持久化

将appendonly修改为yes,开启AOF持久化机制,默认会在目录下产生一个appendonly.aof文件

优点:持续性占用极少量的系统资源,更高的数据安全性
缺点:日志文件比较大,在运行效率上往往会慢于RDB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值