Redis数据库

三大主流数据库之一 Redis数据库

​ Redis 是一个高性能的key-value 数据库。

1.Redis_NoSQL 和 Redis简介

1.1 目标

  • 了解 NoSQL 概念
  • 了解 Redis 概念
  • 了解 Redis 的特点

1.2 NoSQL介绍

NoSQL:一类新出现的数据库(not only sql),它的特点:

  • 不支持 SQL 语法

  • 存储结构跟传统关系型数据库中的那种关系表完全不同,NoSQL中存储的数据都市 KV 形式

  • NoSQL 的世界中没有一种通用的语言,每种 NoSQL 数据库都有自己的 API 和语法,以及擅长的业务场景

  • NoSQL 中的产品种类相当多:

    • Mongodb
    • Redis
    • Hbase hadoop
    • Cassandra handoop

NoSQL 和 SQL 数据库的比较:

  • 适用场景不同:SQL数据库适合用于关系特别复杂的数据查询场景,NoSQL反之
  • “事务” 特性的支持:SQL 对事务的支持非常完善,而 NoSQL基本不支持事务
  • 两者在不断地取长补短,呈现融合趋势

1.3 Redis简介

  • Redis 是一个开源的使用 ANSI C 语言编写。支持网络,可基于内存亦可持久化的日志型 Key-Value数据库,并提供多种语言的 API 。从2010年3月15日起,Redis 的开发工作由 VMware 主持,从2013年5月开始,Redis 的开发由 Pivotal 赞助。
  • Redis 是 NoSQL 技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任。如缓存,队列系统的不同角色。

1.4 Redis特性

  • Redis 与其他 Key-Value 缓存产品有以下三个特点:
    1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    2. Redis 不仅仅支持简单的 Key-Value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
    3. Redis 支持数据的备份,即 master-slave 模式的数据备份。

1.5 Redis优势

  • 性能极高 —— Redis 能读的速度是 110000 次/S,写的速度是 81000次/S。
  • 丰富的数据类型 —— Redis 支持二进制案例的 Strings,Lists,Hashes,Sets 及 Ordered Sets 数据类型操作。
  • 原子 —— Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作全并后的原子性执行。
  • 丰富的特性 —— Redis 还支持 publish/subscribe,通知,key 过期等等特性。

1.6 Redis应用场景

  • 用来做缓存(echache/memcached) —— Redis的所有数据是放在内存中的(内存数据库)
  • 可以在某些特定应用场景下替代传统数据库 —— 比如社交类的应用
  • 在一些大型系统中,巧妙的实现一些特定的功能:session 共享,购物车
  • 只要你有丰富的想象力,Redis 可以给你无限的惊喜

推荐阅读

2. Redis安装

2.1 目标

  • 了解 Redis 环境搭建

2.2 下载

  • Redis 稳定版本是 3.2 版本

  • 最新稳定版下载链接: 戳我

  • STEP1:下载

wget http://download.redis.io/releases/redis-3.2.8.tar.gz
  • STEP2:解压
cd Download # 进入下载目录
tar --help # 查看解压命令,解释为:Extract all files from archive.tar.
tar -zxvf(我这里是 -xf) redis-3.2.8.tar.gz
  • STEP3:复制,放到 usr/local 目录下
sudo mv ./redis-3.2.8 /usr/local/redis/
  • STEP4:进入 Redis 目录
cd /usr/local/redis/
  • STEP5:生成
sudo make
  • STEP6:测试,这段时间运行时间会较长
sudo make test
  • STEP7:安装,将 Redis 的命令安装到 /usr/local/bin/ 目录
sudo make install
  • STEP8:安装完成后,我们进入目录 /usr/local/bin/ 中查看
cd /usr/local/bin
ls -all

redis-server redis服务器

redis-cli redis命令行客户端

redis-benchmark redis性能测试工具

redis-check-aof AOF文件修复工具

redis-check-rdb RDB文件检索工具

  • STEP9:配置文件,移动到 /etc/ 目录下
    • 配置文件目录为 /usr/local/redis/redis.conf
sudo cp /usr/local/redis/redis.conf /etc/redis/ # /etc 下无redis 目录,自行创建

3. Redis配置

3.1 目标

  • 了解 Redis 的配置

3. 2 查看配置

  • Redis 的配置信息在 /etc/redis/redis.conf 下
  • 查看
sudo vi /etc/redis/redis.conf

3.3 核心配置选项

  • 绑定IP:如果需要远程访问,可将此行注释,或绑定一个真实IP
bind 127.0.0.1
  • 端口,默认为 6379
port 6379
  • 是否以守护进程运行
    • 如果以守护进程运行,则不会在命令行阻塞,类似与服务
    • 如果以非守护进程运行,则当前终端被阻塞
    • 设置为 yes 表示守护进程,设置为 no 表示非守护进程
    • 推荐设置为 yes
daemonize yes
  • 数据文件
dbfilename dump.rdb
  • 数据文件存储路径
dir /var/lib/redis
  • 日志文件
logfile /var/log/redis/redis-server.log
  • 数据库,默认有16个
database 16
  • 主从复制,类似与双机备份
slaveof

3.4 参考信息

Redis配置信息

4.Redis启动服务端和客户端

4.1 目标

  • 了解 Redis 服务器端和客户端的命令

4.2 服务器端

  • 服务器端的命令为 redis-server
  • 可以使用 help 查看帮助文档
redis-server --help
  • 推荐使用服务的方式管理 redis 服务
  • 启动
sudo service redis start
  • 停止
sudo service redis stop
  • 重启 sudo service redis restart

  • 个人习惯

    ​ 跟着教程安装的,用下面的命令启动

ps -ef|grep redis # 查看redis服务器进程
sudo kill [redis服务器的PID] # 杀死redis服务器
sudo redis-server /etc/redis/redis.conf # 指定加载的配置文件

4.3 客户端

  • 客户端的命令为 redis-cli
  • 可以使用 help 查看帮助文档
redis-cli --help
  • 连接redis
redis-cli

  • 切换数据库
    • 数据库没有名称,默认有16个,通过0-15来标识,连接 redis 默认选择第一个数据库
select n

5. 数据操作

5.1 学习目标

  • 了解 Redis 存储数据结构

5.2 数据结构

  • Redis 是 Key-Value 的数据结构,每条数据都是一个键值对

  • 键的类型是字符串

  • 注意:键不能重复

  • 值的类型分为五种:

    • 字符串 string
    • 哈希 hash
    • 列表 list
    • 集合 set
    • 有序集合 zset

5.3 数据操作行为

  • 保存
  • 修改
  • 获取
  • 删除

中文官网命令文档

5.3.1 string

学习目标

  • 掌握 string 类型

string类型

  • 字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如 JPEG 图像数据或 Json 对象描述信息等。在 Redis 中字符串类型的 Value 最多可以容纳的数据长度是:512M。

保存

​ 如果设置的键不存在则为添加,如果设置的键已经存在则修改

  • 设置键值
set key value
  • 例1:设置键为 name 值为 itcast 的数据
set name itcast
  • 设置键值及过期时间,以秒为单位
setex key seconds value
  • 例2:设置键为 aa 值为 aa 过期时间为 3秒的数据
setex aa 3 aa
  • 设置多个键值
mset key1 value1 key2 value2
  • 例3:设置键为 ‘a1’ 值为 ‘python’,键为 ‘a2’ 值为 ‘java’,键为 ‘a3’ 值为 ‘c’
mset a1 python a2 java a3 c
  • 追加值
append key value
  • 例4:向键为 a1 中追加值 ‘haha’
append a1 haha

获取

  • 获取:根据键获取值,如果不存在此键则返回nil
get key
  • 例5:获取键 ‘name’ 的值
get name
  • 根据多个键获取多个值
mget key1 key2....
  • 例6:获取键 a1 a2 a3 的值
mget a1 a2 a2

5.3.2 键命令

学习目标

  • 掌握键命令

键命令

  • 查找键,参数支持正则表达式、
keys pattern
  • 例1:查看所有键
keys *
  • 例2:查看名称中包含 a 的键
keys a*
  • 判断键是否存在,如果存在返回1,不存在返回0
exists key1
  • 例3:判断键 a1 是否存在
exists a1
  • 查看键对应的 value 的类型
type key
  • 例4:查看键 a1 的值类型,为 redis 支持的五种类型中的一种
type a1
  • 删除键对应的值
del key1 key2....
  • 例5:删除键 a2 a3
del a2 a3
  • 设置过期时间,以秒为单位
  • 如果没有指定过期时间则一直存在,直到使用 DEL 移除
expire key seconds
  • 例6:设置键 a1 的过期时间为3秒
expire a1 3
  • 查看有效时间,以秒为单位
ttl key
  • 例7:查看键 bb 的有效时间
ttl bb

  转载请注明: 浩大大 Redis数据库

  目录