Redis安装,基本命令,持久化方式,集群

1、什么是nosql

nosql(not only sql)不仅仅是sql。NoSQL,泛指非关系型的数据库。非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL的产品有Mongodb;redis;Hbase:针对大数据

非关系数据库和关系型数据库之间的区别:

RDBMS---关系型数据
- 高度组织化结构化数据。
- 结构化查询语言(SQL) select
- 数据和关系都存储在单独的表中。
- 数据操纵语言DML,数据定义语言DDL
- 严格的一致性. 事务 ACID
- 基于事务
NoSQL--非关系型数据库---缓存数据
- 代表着不仅仅是SQL
- 没有声明性查询语言  
- 键 - 值对存储 key value
- 非结构化和不可预知的数据  
- 高性能,高可用性和可伸缩性。 适合搭建集群。

2、redis简介

Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

redis的优点:

  • Redis读取的速度是110000次/s,写的速度是81000次/s,运算是基于内存来计算的
  • 原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
  • 持久化--磁盘,主从复制(集群)
  • 官方不支持window系统,但是又第三方版本。 linux系统。

3、安装redis

安装redis的依赖。

yum install -y gc-c++

解压redis安装包

tar -zxvf redis-7.0.4.tar.gz

进入redis解压目录

mv redis-7.0.4 redis7.0

cd redis7.0/

 make 编译c语言 make install 安装redis

make install

 启动redis

redis-server redis.conf

 连接redis

redis-cli   默认连接为127.0.0.1 端口号6379

redis-cli -h ip  -p port  远程连接其他人的redis

 4、redis的相关配置(设置端口号,守护线程,可远程访问)

设置后台启动(守护线程)

设置端口号

设置远程可访问

5、安装redis客户端界面

 6、redis常用命令

(1)对key的命令

1、查看所有的key

keys *

2、为指定的key设置过期时间

expire key 时间  返回1表示设置成功

3、查看key的剩余存活时间

ttl key名  返回-1表示key永远存在;返回-2表示key不存在

4、删除指定的key

del key名1 key名2 ...       返回结果为删除的个数

 

5、判断指定的key是否存在(0表示不存在,1表示存在)

EXISTS key名

 

(2)对redis数据库的操作

默认redis中有16个数据库,可以通过修改redis的配置文件更改

1、切换数据库

select n[0-databases-15]

2、清空当前库的内容

flushdb  

 

3、清空所有库的内容

flushall

7、redis支持的数据类型

字符串、哈希、列表、集合、排序集合、流等

 我们使用频率最高的:String字符串类型,Lists字符串类型,Sets集合类型,Set有序集合。这里的类型是value的类型。

(1)String类型

在实际开发中,String类型可以存储任意数据类型,因为任意类型都可以转为json字符串,默认存储大小为512M。

常见命令

1、存储指定key和value的值

set key value

2、获取指定key的value的值

get key

3、存储多个key和value的值(如果key存在,覆盖)

mset key value key value ...

4、获取多个key对应的value(nil为空)

mget key key ...

5、如果指定的key存在则不存入,如果不存在则存入redis

setnx key value

6、存储指定的key和value并设置过期时间

setex key seconds value

7、对指定key的value设置递增

incr key

8、对指定key的value设置递减

decr key

 

(2)Hash哈希类型

value值的类型为hash类型,hash类型由field和value组成,适合存储对象。

常见命令

1、存储指定key的field和value值

hset key field value field value ...

2、获取指定key的field对应的value值

hget key field

3、获取在哈希表中指定key的所有字段和值

hgetall key

4、获取指定key的所有field字段

hkeys key

5、获取指定key的所有value值

hvals key

6、删除指定key对应的field值

hdel key field

(3)list列表类型

value值为list列表类型,他的value值可以是多个值,并且值有序可重复,一般使用在消息队列

常用命令

1、从左边存储指定key对应的list列表值

lpush key value1 value2 value3 ...

2、从右边存储指定的key对应的列表值

rpush key value1 value2 value3 ...

3、从左边移除并获取指定数量的元素

lpop key [count]

4、从左边获取列表指定范围内的元素

lrange key start stop(-1为最后一个元素)

5、从左边根据下标获取指定的元素

lindex key index

6、从左边修改指定坐标的元素内容

lset key index value

 (4)set集合类型

value类型是一个set集合类型,这个集合的元素无序,不可重复,求两个集合的交集

常用命令

1、向集合中添加一个或多个成员

sadd key value1 value2 ...

2、获取集合中所有的成员

smembers key

3、随机获取某个元素并移除

spop key

4、获取给定所有集合的交集

sinter key1 key2 ...

(5)sort set有序集合

value类型为一个带分数的集合类型,按照分数排序,默认从低到高排序,应用于排行榜排序,比如商品等等

常用命令

1、向redis中添加有序的集合

zadd key score value score value ...

2、获取指定范围内的元素

zrange key start stop [withscores]是否携带分数

3、分数从高到低获取指定范围内的元素

zrevrange key start stop [withscores]

7、redis的使用场景

  1. 热点数据的缓存:减少对数据库的访问频率和减轻数据库的压力,访问数据库之前先访问缓存,缓存名命中就不再访问数据库。
  2. 限时业务的运用:秒杀 存储登录者用户信息 存储短信验证码
  3. 计数器相关问题:点击量 播放量 收藏数
  4. 排行榜相关问题:sort set
  5. 分布式锁:setnx

8、redis的持久化

持久化:把内存中的数据库保存到磁盘上,防止数据丢失。

redis支持的持久化方式有两种:

第一种:RDB(Redis DataBase):快照 其实就是把数据的快照以二进制的方式保存在磁盘上,快照可以理解为把当前时刻的数据拍照保存。

第二种:AOF(Append Only File):日志追加  记录服务器接收的每个写入操作,当服务器启动时再次加载该日志

fork:fork 的作用是复制一个与当前进程一样的子进程,该子进程的所有数据都和原进程一致。

(1)RDB快照持久化方式

RDB的触发方式

第一种:手动触发

  1. save阻塞型保存
  2. bgsave非阻塞型保存

第二种:自动触发

默认保存的文件名:dump.rdb,可以在redis.conf文件中修改480行附近filename的值

save

该命令执行情况如下:

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:

执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

bgsave

执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

自动触发rdb

修改redis.conf配置文件

RDB 持久化优缺点

优点

  • RDB 保存的数据文件比较紧凑,对比 AOF 来说,相同数据的文件大小比较小;

  • 大量数据持久化时速度相对 AOF 比较快;

  • RDB 中 bgsave 模式对主进程影响比较小,只有在主进程 fork 子进程的时候耗费资源,但影响不大;自动备份后台用的就是 bgsave 模式;

缺点

  • RDB 可能会丢失最后一次没有备份的数据,如果在最后一次没开始备份之前,服务器挂了,那最后一次的数据就没了;

  • 当数据量巨大时,主进程在 fork 子进程的时候,可能会导致稍微的卡顿;

(2)AOF日志追加持久化方式

aof模式会把每个写操作,记录到一个日志文件,当redis启动时会把该日志中每个指令重新执行一遍。 数据恢复速度慢。数据完整性高。

默认的文件目录和文件名在配置文件中如下图所示:

 默认aof不会开启

查看aof文件

AOF 持久化优缺点

AOF 的出现,是解决了 RDB 丢失最后一次没保存的数据,极大的降低了数据丢失的风险,但其也带来相关问题;

优点

  • 降低数据丢失风险,如果丢失,最多一秒数据;

  • 以追加方式记录日志,速度快;

  • 自动优化 AOF 文件,文件过大时进行重写,精简 AOF 文件;

缺点

  • 相同大数据,AOF 文件比 RDB 文件大,占用磁盘空间;

  • 对于大数据的恢复,速度没有 RDB 快;

注: 如果不是使用混合持久化,而是将 RDB 和 AOF 同时开启,redis-server 恢复数据的时候会优先使用 AOF 文件进行数据恢复,因为 AOF 文件相对比较完整;不过大多数情况下都会使用rdb,因为数据恢复比较方便。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值