当前位置:网站首页>Redis的介绍和使用
Redis的介绍和使用
2022-08-02 16:45:00 【不想秃头的小杨】
1.什么是NOSQL
nosql(not only sql)不仅仅是sql。NoSQL,泛指非关系型的数据库。非关系型的数据库则由于其本身的特点得到了非常迅速的发展。
非关系数据库和关系型数据库之间的区别:
RDBMS---关系型数据
- 高度组织化结构化数据。
- 结构化查询语言(SQL) select
- 数据和关系都存储在单独的表中。
- 数据操纵语言DML,数据定义语言DDL
- 严格的一致性. 事务 ACID
- 基于事务
NoSQL--非关系型数据库---缓存数据
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 键 - 值对存储 key value
- 非结构化和不可预知的数据
- 高性能,高可用性和可伸缩性。 适合搭建集群。
NOSQL的产品 :
Mongodb:
redis:
Hbase:针对大数据
2.什么是Redis
Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
3.Redis的优点
1.Redis读取的速度是110000次/s,写的速度是81000次/s
2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
4.持久化--磁盘,主从复制(集群)
5.官方不支持window系统,但是又第三方版本。 linux系统。---
4.如何安装Redis
4.1安装准备
1.安装redis需要的环境。
yum install -y gc-c++
2.上官网下载redis源码安装包。
4.2安装步骤
1.把下载的redis安装包通过xftp拉到/usr/local下
2. 解压redis安装包到/usr/local
3. 进入redis解压目录并执行编译命令 make
4. 执行安装命令 make install
4.3开启redis服务
redis-server redis.conf
4.4.使用redis客户端连接redis服务器
连接redis
redis-cli 默认连接为127.0.0.1 端口号6379redis-cli -h redis服务器的ip -p redis服务器的端口号 远程连接其他人的redis
例如:redis-cli -h 127.0.0.1 -p 6379
4.5简单了解一下redis.conf
# 表示启动redis服务器时 后台启动。
daemonize yes
# 默认的端口号。
port 6379
# 默认运行绑定的端口号~~~~~~~~~~~~~~~~~~~~~~~HTTP协议~~~~~~~~~~~~~~~~~
# bind 127.0.0.1
# 0.0.0.0 表示广播模式 意思是所有人都可以连接。127.0.0.1
bind 0.0.0.0
4.5.1设置redis后台启动
4.5.2修改端口号
4.5.3设置远程连接
4.5.4修改完配置信息后启动redis
4.6安装redis客户端界面
5.redis常用命令。
http://www.redis.net.cn/order/http://www.redis.net.cn/order/
http://redisdoc.com/http://redisdoc.com/
5.1对key操作的命令
5.1.1. 查看所有的key
5.1.2为指定的key设置过期时间。
5.1.3 查看key的剩余存活时间 ttl key
返回-1表示永远存在 -2不存在该key
5.1.4删除指定的key delete key... 返回结果为删除的个数
5.1.5 判断指定的key是否存在 exists key
返回0表示不存在 返回1表示存在
5.2对redis数据库的操作
默认redis中由16库。可以通过修改redis配置文件更改数量。
5.2.1 select n: 切换redis库。n[0~databases-1]
5.2.2flushdb: 清空当前所在的库。
5.2.3flushall: 清空所有库的内容
6.redis支持的数据类型。
我们使用频率最高是: Strings字符串类型,Lists列表类型,Sets集合类型,Hashes哈希类型,Sorted Sets 有序集合。这里所谓的类型,就是value的类型。
6.1 Strings类型
它的value值为String类型,在实际开发中,它可以存储任意的数据类型。因为任何对象可以转换为json字符串。它的默认存放的大小512M.
关于string类型的命令由哪些?
6.1.1 set key value: 存储指定key和value的值。
6.1.2 get key: 获取指定key的value值。
6.1.3 mset key value key value...:存储多个key和value的值
6.1.4 mget key key ...:获取多个key对应的value。
6.1.5 setnx key value: 如果指定的key存在,则不存入。如果不存在,则存入。
6.1.6 setex key second value: 存储指定的key和value并设置过期时间。
6.1.7 incr key: 对指定key的value递增。----点赞 收藏数 主键的递增
6.1.8 decr key: 对指定key的value递减
6.2Hash哈希类型
它的value值为hash类型,hash类型由field和value组成。适合存储对象。
关于hash类型的命令由哪些?
6.2.1 hset key field value: 存储指定key的field和value值。
6.2.2 hget key field: 获取指定key的field对应的value值。
6.2.3 hgetall key: 获取在哈希表中指定 key 的所有字段和值
6.2.4. hkeys key: 获取指定key所有field名称
6.2.5 hvals key: 获取指定key的所有value值。
6.2.6 hdel key field: 删除指定key对应的field值
6.3list列表类型
它的value类型为list列表类型,它的value可以是多个值,而且这些者可以重复,有序。一般使用在消息队列。
常用的方法
6.3.1 lpush key value value....:从左边存储指定key的对应列表值。
6.3.2 lpop key: 移出并获取列表的第一个元素
6.3.3lrange key start end: 获取列表指定范围内的元素
6.3.4 lindex key index: 根据下标获取指定的元素
6.3.5 lset key index value: 修改指定坐标的元素内容
6.4set集合类型
它的value类型是一个set集合类型,这个集合类型元素无需,且不能重复。求两个集合的交集
常见的命令
6.4.1 sadd key value....:向集合添加一个或多个成员
6.4.2 smembers key :返回集合中的所有成员
6.4.3 spop key: 随机获取某个元素并移除
6.4.5 sinter k1 k2.。。: 返回给定所有集合的交集
6.5sort set 集合
它的value类型为一个带分数的集合类型。按照分数排序。应用在: 排行榜
6.5.1 zadd key score value score value.....: 往redis中添加有序集合
6.5.2 zrange key start end: 获取指定返回的元素
6.5.3 ZREVRANGE k1 0 -1 WITHSCORES: 分数从高到低
7.redis的使用场景
1、热点数据的缓存: 减少对数据库的访问频率和减轻数据库的压力。
2. 限时业务的运用: 秒杀 存储登录者用户信息 存储短信验证码
3. 计数器相关问题: 点赞数 收藏数 播放量
4. 排行榜相关问题: sort set
5. 分布式锁:
8.redis的持久化
持久化:把内存中的数据库保存到磁盘上,防止数据的丢失。
redis支持的持久化方式两种:
(1)RDB:快照 其实就是把数据以快照的形式保存在磁盘上,什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
(2)AOF :日志追加 记录服务器接受的每个写入操作,当服务器启动时再次加载该日志,会把日志中的命令重新执行一遍。
8.1RDB快照持久化方式
8.1.1 RDB的触发方式
1.手动触发
【1】save堵塞型保存
[2]bgsave非堵塞型保存
2.自动触发
默认保存的文件名: dump.rdb 可以在redis.conf名称
save
该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下:
自动触发rdb
修改redis的配置文件。
8.2 AOF日志追加持久化方式
默认该文件的名称:
默认aof不会开启。
查看
边栏推荐
猜你喜欢
numpy的学习笔记
小心 transmittable-thread-local 的这个坑
julia系列5:文本、图像、其他语言函数互动
1.NVIDIA Deepstream开发指南中文版--欢迎使用 DeepStream 文档
Kubernetes:(五)Pod进阶(资源限制、健康检查)
Oracle 11 g rac finished patch, dbca new patches of SQL database also needs to perform?
npm install 编译时报“Cannot read properties of null (reading ‘pickAlgorithm‘)“
边界访问的空间权限
Navicat for mysql cracked versions installed
Oracle 11g rac打完补丁,dbca新建数据库还需要执行应用补丁的sql吗?
随机推荐
When Oracle analyzes the archive log content, it finds many nulls?
链表的归并排序[自顶向下分治 || 自低向上合并]
Mysql开启binlog
Locking and Concurrency Control (4)
金仓数据库KingbaseES安全指南--6.12. BSD身份验证
Gartner发布,年度Challenger!
Gartner released, annual Challenger!
nacos集群配置详解
数字孪生园区场景中的坐标知识
Nacos环境隔离
Locking and Concurrency Control (2)
29. 两数相除
【genius_platform软件平台开发】第七十五讲:YUY2转RGB24实现源码
Antd-ProComponents中的EditableProTable无法在子行继续新增子子行的临时解决方案
特殊变量 (SQL)
关于我用iVX沉浸式体验了一把0代码项目创建
julia系列3:函数、模块与宏
牛客的课程订单分析[分组统计时如何取指定行字段?]
融云「 IM 进阶实战高手课」系列直播上线
锁定和并发控制(三)