Redis

Redis

Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用
  • Redis不仅支持key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储
  • Redis支持数据的备份,即master-slave模式的数据备份

优势

  • 性能极高,redis能读的速度是11w次/s,写的速度是8.1w次/s
  • 丰富的数据类型,Redis支持二进制案例的Strings、Lists、Hashes、Sets及Ordered Sets数据类型操作
  • 原子,Redis的所有操作都是原子性的,就是要么成功执行所有操作要么完全失败不执行,单个操作是原子性的。多个操作也支持事务,通过MULIT和EXEC指令包起来
  • 丰富的特性,Redis还支持publish/subscribe,通知,key过期等特性

与其他key-value存储的不同

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作;Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象
  • Redis运行在内存中但是可以持久化到硬盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面,是紧凑的以追加的方式产生的,因为他们不需要进行随机访问

Redis和MySQL的区别

  • 数据库类型:mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢;redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,存储的读取速度快,能够大大的提高运行效率,但是保存时间有限
  • MySQL运行机制:mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作。第一,导致运行效率过慢;第二,反复的访问数据库也会导致属数据库的负载过高,因此衍生了缓存的概念,缓存就是数据交换的缓冲区(cache),当浏览器执行请求时,首先会在缓存中进行查找,然后再去数据库
  • redis是一款缓存数据库,用于存储使用频繁的数据,这样可以减少访问数据库的次数,提高运行效率

总结

  1. 类型:
    • mysql是关系型数据库,redis是非关系型数据库
  2. 作用:
    • mysql用于持久化的存储数据到硬盘,但是速度慢
    • redis用于存储使用较为频繁的数据到缓存中,读取速度快
  3. 需求:
    • 一般配合使用

Redis的安装

教程:https://www.runoob.com/redis/redis-install.html

windows下载地址:https://github.com/microsoftarchive/redis/releases

下载.mis自动配置环境变量

#1.cmd,redis.windows.conf可省略,会启用默认
>>redis-server.exe redis.windows.conf

启动服务

#2.上一个cmd窗口不要关,另开一个cmd窗口,切换到redis安装目录下(也可以不cd?)
>>D:\slk\OldBoy\Redis>redis-cli.exe -h 127.0.0.1 -p 6379
>>D:\slk\OldBoy\Redis>set myKey abc
>>D:\slk\OldBoy\Redis>get myKeys

1574582983161

Rdis键语法

#创建key
>>set KeyName KeyValue

#获取键值、
>>get KeyName

#删除键
>>del KeyName

#键是否存在
>>exists KeyName

#给键设置过期时间,以秒为单位
>>expire KeyName

#移除键的过期时间
>>persisy KeyName

#给键重命名
>>rename KeyName NewName

#返回数据类型
>>type KeyName

Redis哈希

Redis hash是一个是string类型的field和value的映射表,适合存储对象

Redis中每个hash可以存储2**32-1键值对(40多亿)

#设置值(当字段不存在时)
>>hsetnx Key Field Value

#设置值,可设置多个
>>hmset Key Field Value

#查看指定字段是否存在
>>hexists Key Field

#获取值
>>hget key field

#获取指定键中所有字段和值
>>hgetall Key

#获取指定哈希表中所有字段
>>hkeys Key

#获取指定哈希表中所有值
>>hvals Key

#获取哈希表中字段数
>>hlen Key


posted on 2019-12-11 15:36  shenblogs  阅读(795)  评论(0编辑  收藏  举报

导航