概述、安装
NoSQL
1、Not Only SQL
2、泛指非关系型的数据库
3、不依赖业务逻辑方式存储,而以简单的 key-value 模式存储,因此大大的增加数据库的扩展能力
(1)不遵循 SQL 标准
(2)不支持 ACID
(3)远超于 SQL 性能
4、应用场景
(1)数据高并发的读写
(2)海量数据的读写
(3)对数据高可扩展性
5、不适用场景
(1)需要事务支持
(2)基于 SQL 的结构化查询存储,处理复杂的关系,需要即席查询
Redis
1、开源 key-value 存储系统
2、和 Memcached 类似
(1)支持存储 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)、hash(哈希类型)
(2)数据类型都支持 push / pop、add / remove,取交集、并集、差集及其他操作,而且这些操作都是原子性的
(3)在此基础上,Redis 支持各种不同方式的排序
3、与 Memcached 相同
(1)为了保证效率,数据都是缓存在内存中
(2)区别:Redis 会周期性把更新数据写入磁盘,或把修改操作写入追加的记录文件
(3)在此基础上实现 master-slave(主从)同步
4、配合关系型数据库做高速缓存
(1)高频次访问的数据,降低数据库 I/O
(2)分布式架构,共享 Session
5、多样的数据结构,存储持久化数据
(1)通过 List 实现按自然时间排序的数据,获取最新 N 个数据
(2)zset(有序集合)
(3)Expire 过期,时效性的数据
(4)原子性,自增方法 INCR、DECR
(5)Set 集合,去除重复数据
(6)List 集合,构建队列
(7)pub / sub 模式,发布订阅消息系统
6、与 Memcache 不同
(1)Memcache:支持类型单一;Redis:支持多数据类型
(2)Memcache:不支持持久化;Redis:支持持久化
(3)Memcached:多线程 + 锁;Redis:单线程 + 多路 I/O 复用
7、底层:单线程 + 多路 I/O 复用
(1)多路复用:使用一个线程,检查多个文件描述符(Socket)就绪状态
(2)如:调用 select、poll,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时,得到就绪状态后,进行真正的操作时,可以在同一个线程执行,也可以启动线程执行(如线程池)
Redis 基于 C 语言编写
1、安装 Redis 所需的 gcc 依赖
yum install gcc
2、测试 gcc 是否成功安装
gcc -version
从源代码编译并安装 Redis
1、解压
tar -xzvf redis-stable.tar.gz
2、进入 redis 目录
cd redis-stable
3、编译
make
(1)如果没有安装 C 语言编译环境,make 会报错
(2)解决:清除 dist 文件,再编译
make distclean
4、安装
make install
5、安装时自动配置环境变量,可以在任意目录下启动
默认安装目录:/usr/local/bin
1、redis-benchmark:性能测试工具
2、redis-check-aof:修复有问题的 AOF 文件
3、redis-check-dump:修复有问题的 dump.rdb 文件
4、redis-sentinel:Redis 集群使用
5、redis-server:Redis 服务器启动命令
6、redis-cli:客户端,操作入口
两种启动方式
1、前台启动
(1)进入 Redis 安装目录
redis-server
(2)不使用
(3)命令行窗口不能关闭,否则服务器停止
2、后台启动
(1)备份 redis.conf 到其他目录
cp 源目录/redis.conf 备份目录
(2)切换到备份目录
(3)使用 vim 修改 redis.conf 文件,将 daemonize no 改成 daemonize yes,让服务在后台启动,
(4)启动 Redis
redis-server 备份目录/redis.conf
(5)单客户端访问
redis-cli
(6)多客户端访问,指定端口号(默认 6379)
redis-cli -p6379
(7)测试连接:返回 PONG,则正常
ping
关闭 Redis
1、杀死一个 Redis 进程
kill -9 进程号
2、进入 Redis 后关闭
shutdown
3、单实例关闭
redis-cli shutdown
4、多实例关闭,指定端口关闭
redis-cli -p6379 shutdown
默认16 个数据库
1、类似数组
2、下标从 0 开始
3、初始默认使用 0 号库
4、切换数据库命令:select <dbid>
统一密码管理
1、所有库密码相同
2、命令
(1)dbsize:查看当前数据库 key 数量
(2)flushdb:清空当前库
(3)flushall:清空全部库
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战