目录
1. Redis 的介绍
2. Redis 的配置和管理
3. Redis支持的数据结构
3. 关于 Redis 数据库的命令操作
1. Redis 的介绍
- 先了解一下什么是NoSQL?
1. NoSQL 只是一种概念,泛指非关系型的数据库;通常描述为: non-relational 、Not Only SQL。
2. 关于数据库两种不同的概念简介:
MySQL、Oracle、SQLServer、...
key-value 存储数据。比如:我们今天所讲的 Redis
3. key-value 存储数据的结构跟传统关系数据中的关系表完全不同。
4. 不支持 SQL 语法。
5. NoSQL类型的数据库没有一种通用的语言,每种NoSQL数据库都有自己的API和语法,以及擅长的业务场景。
Redis:用作数据库、缓存和消息队列;
Mongodb:用作文档存储;
Hbase hadoop:用作大数据处理。
- NoSQL的优点: * * * * *
1. 结构简单,易扩展
2. 大数据量,高性能
- NoSQL和SQL比较:
1. 使用场景不同:NoSQL 适用于关系简单的数据场景;SQL 适用于关系复杂的数据场景。
2. 存储数据模型不同:NoSQL 数据模型为:key-value ;SQL 关系式模型: 数据表。
3. 读取性能不同: NoSQL读写性能 优于 SQL。
- Redis 简介:
1. 开源,内存型的结构存储系统。
2. 用于 数据库缓存 和 消息中间件。
3. 支持多类型数据结构,如: 字符串(strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)。
4. 键值对存储方式
5. 属于 NoSQL 中的一员
- Redis 的特点
1. Redis支持存储的数据类型丰富:字符串、散列、列表、集合、有序集合。
2. Redis支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
3. Redis支持数据的备份:即master-slave模式(主从模式)的数据备份。
4. Redis读写性能极高:读的速度是110000次/s,写的速度是81000次/s。
5. 原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- Redis 的应用场景
1. 缓存:提升网站访问速度,减轻数据库的压力。
2. 购物车: 数据量不大,关系简单,可以基于Redis实现。
3. 消息系统: 消息队列是大型网站必用中间件,主要用于业务解耦、流量削峰及异步处理实时性低的业务。
4. 计数器: 如电商网站的浏览量、网站视频的播放量等。保证数据的实时性,每次浏览后都要 +1。
2. Redis 的配置和管理
- 配置
配置文件位置:/etc/redis/redis.conf
编辑配置文件:sudo vim /etc/redis/redis.conf
建议修改项:
注释掉bind:# bind 127.0.0.1
关闭保护模式:protected-mode no
后台运行:daemonize yes
重启redis:
查看进程pid:ps aux | grep redis-server
杀掉进程:方法一:sudo kill -9 pid
方法二:sudo service redis_6379 stop
方法三:redis-cli shutdown
启动redis:方法一:sudo redis-server /etc/redis/redis.conf
sudo service redis_6379 start
- 管理
必须先开启服务端:
先查看服务端是否开启:ps aux | grep redis-server
如果服务端已开启就不管
如果没有开启就开启:sudo redis-server /etc/redis/redis.conf
然后再使用 redis-cli 登录到 redis-server
使用默认的IP和端口访问:redis-cli
使用真实IP访问: redis-cli -h ubuntu 真实IP
3. Redis支持的数据结构
- 0. Redis的数据模型是:key-value
value可以是以下这些类型
1. String:字符串
2. hash:散列、hash表
3. list:列表
4. set:无序集合
5. zset:有序集合 - String:字符串
value ===> "n74y23847yshcb"
"key": "n74y23847yshcb" - hash:散列、hash表
value ===> field val
value ===> "name" "Lisi"
"key": "name" "Lisi"
- list:列表
value ===> "1" "2" "3"
"key": "1" "2" "3" - set:无序集合
vlaue ===> "1" "2" "3"
"key": "1" "3" "2" - zset:有序集合
vlaue ===> "1" score "2" score "3" score
"key": "1" score "2" score "3" score
3. 关于 Redis 数据库的命令操作
- Redis 命令参考:http://doc.redisfans.com/index.html
- Redis也支持 增删改查
1. String 类型 常见操作 ("key": "n74y23847yshcb")
set:一次保存一个键值
命令: set key value
127.0.0.1:6379[1]> SET name lin
OK
mset:一次性保存一个键值或者多个键值
命令: mset key1 value1 key2 value2 [key3 value3 ......]
get:一次读取一个键值
命令: get key value
mget:一次读取一个键值或者多个键值
命令:mget key1 key2 [key3 ......]
setex:存储带有有效期的字符串
命令:setex key seconds value