百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

初识Redis(初识只作乍见之欢,日后惊于久处不厌)

mhr18 2024-10-23 11:32 29 浏览 0 评论

Redis是一个开源的内存数据存储工具,可用作数据库,缓存或消息代理,数据类型支持字符串,哈希值,列表,集合,排序集合。内置复制功能,Lua 脚本支持。支持不同程度的磁盘持久化,以及高可用和集群。

安装

以Linux环境为例,依次运行下面的命令

$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
$ tar xzf redis-5.0.3.tar.gz
$ cd redis-5.0.3
$ make

运行Redis服务器

$ src/redis-server

运行Redis内置的客户端命令行工具,测试设置key为foo,值为bar的数据,然后获取该数据

$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

使用客户端连接

Redis支持非常多的客户端语言:

每种语言下面又有许多丰富的客户端工具可供选择,以Nodejs为例

我们这里使用ioredis来演示客户端连接。

创建Nodejs工程

npm init -y
npm i --save ioredis nodemon

这里使用nodemon以便程序自动重启

编辑后,package.json文件内容如下:

{
 "name": "RedisDemo",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "start": "nodemon index.js"
 },
 "keywords": [],
 "author": "",
 "license": "ISC",
 "dependencies": {
 "ioredis": "^4.5.1",
 "nodemon": "^1.18.9"
 }
}

index.js源代码

var Redis= require('ioredis');
const redis = new Redis();
redis.set('name', 'redis');
redis.get('name', (err, result) => {
 console.log(result);
});

设置了一个key,然后读取该key值

运行测试

npm start

持久化

Redis有两种持久化方案

RDB:Redis database file方案

AOF:Append-only file方案

AOF:使用日志的形式重建数据集

RDB:相当于做快照,是缺省方案

在Redis的文件目录下,找到redis.conf文件,可查看如下做标记的地方,配置第一行表示如果900秒(15分钟)之后,如果有一个key发生了变化,就进行持久化一次,后面是300秒(5分钟)后如果有10个key变化就做持久化,以此类推,可以自己添加任意策略。

同时,默认appendonly是关闭的,可以打开

使用该配置文件启动redis

 src/redis-server /path/to/redis-5.0.3/redis.conf

主从模式运行

拷贝上面提到的redis.conf文件,命名为redis-slave.conf,并编辑:

修改端口: 查找 port 6379,修改为 port 6380

修改运行模式: 查找replicaof,按照下面修改

分别用两个配置文件运行

src/redis-server /path/to/redis-5.0.3/redis.conf
src/redis-server /path/to/redis-5.0.3/redis-slave.conf

查看效果

可以看到运行后主从服务器会自动进行同步。

添加登录验证

在redis.conf文件中查找requirepass,修改

在redis-slave.conf文件中查找requirepass,修改

再次在redis客户端命令行添加key会报错

需要用密码登录

修改代码添加密码登录

使用命令行

使用incr命令为键值加1

使用incrby命令为键值添加任意值

使用decr命令为键值减1

使用decrby命令为键值减任意值

使用getset命令:先获取值,然后再设值

使用mset命令一次设置多个值

使用mget命令一次获取多个值

使用exists命令检查是否存在该键值

使用del命令删除键值

使用expire命令设置过期时间(以秒为单位)

上面的命令同样可以用在代码中,非常简单

修改代码如下:

输出

哈希设值

使用hmset命令设值

使用hgetall获取全部数据

使用hget获取特定字段

用hexists命令检查某个字段是否存在

使用发布订阅功能

使用命令subscribe加频道订阅消息

在另外一个命令行终端运行发布命令

查看订阅终端

以上为redis的基础使用,有兴趣可以继续研究redis的集群和高可用等相关主题。

相关推荐

风险突出的高危端口汇总 一网打尽 !

高危端口一直是攻击者关注的焦点,了解这些端口的风险、攻击方式及防护策略至关重要。一、文件传输类端口1.TCP20/21:FTP服务端口FTP(文件传输协议)用于文件的上传和下载。其明文传输特性使得...

9. Redis Operator (2) —— Sentinel部署

0.简介上一篇,我们借由Redis的单机部署,学习了一下Operator的基本使用,今天,我们在此基础上,部署一下Redis的Sentinel模式。Sentinel本质上是为了解...

Spring Boot3 整合 Redis 后解决缓存穿透问题全解析

在当今互联网软件开发领域,构建高效、稳定的应用系统是每个开发者的追求。对于从事互联网软件开发的人员来说,SpringBoot和Redis都是极为常用的技术工具。当在SpringBoot3...

Spring Boot3 整合 Redis 后解决缓存雪崩问题全解析

在当今互联网软件开发领域,高并发、高性能的系统需求日益增长。对于从事互联网软件开发的人员来说,构建高效的缓存机制至关重要。SpringBoot3作为一款流行的Java框架,与Redis这一...

Sa-Token 多账号体系下Redis持久化问题

在使用Sa-Token框架实现多账号体系时,当后端服务重启后,系统报错"未能获取对应StpLogic,type=XXX"。这种情况通常发生在配置了Redis持久化存储的场景下...

外贸独立站缓存迷惑行为:你的Redis可能正在制造更多问题!

上周帮一个深圳卖家排查网站卡顿,发现他们用Redis缓存了整站HTML——"你们这是把缓存当备份用呢?"结果每次更新产品都要手动清空缓存,编辑小哥差点辞职...最近对象缓存圈两大魔教...

别再用top和htop了,这几款终端神器让你的服务器状态一目了然

当top命令成为性能瓶颈:一个深夜运维的真实困境凌晨三点,服务器告警短信突然炸响。老王盯着屏幕上top命令的黑白界面,CPU使用率飙升到90%却找不到具体进程,内存占用数据分散在不同列,磁盘I/O更是...

Redis学习笔记:管道(Pipelining)技术详解(第三章)

在掌握了Redis的基础命令后,如何进一步提升批量操作的效率?管道(Pipelining)技术是解决这一问题的关键。本章将深入解析管道的工作原理、使用场景及与其他技术的对比,帮助你在高并发场景下优化R...

Redis8.0有哪些新特性(redis最新特性)

Redis8.0引入了多项新特性和功能增强,以下是其中的一些亮点:1、数据结构:向量集合(VectorSet):这是一种新的数据类型,专为向量相似性搜索设计。它基于有序集(sortedset)...

Netty 的对象池(netty objectdecoder)

Netty是一个高性能的网络通信框架,广泛用于构建高并发、低延迟的TCP/UDP服务。为了提升性能,Netty内部大量使用了对象池(ObjectPool)技术来减少频繁创建和销毁对象带来的...

Redis学习笔记:核心命令与数据类型操作指南(第二章)

上一章我们梳理了Redis的核心应用场景与选型逻辑,本章将聚焦Redis的命令体系,从键操作到各数据类型的核心命令,帮你快速掌握Redis的"操作语法"。一、键(Key)命令:Redi...

Redis面试核心考点总结(覆盖 90% 的 Redis 面试场景)

一、基础核心数据类型与适用场景String:缓存、计数器(INCR)、分布式锁(SETNX)Hash:存储对象(用户信息、商品属性)List:消息队列(LPUSH/BRPOP)、时间线Set:标...

Redis ListPack有哪些具体应用场景?

Redis的Listpack是一种紧凑的数据结构,适用于存储少量数据。它被设计为ziplist的一种改进版本,旨在解决ziplist中存在的连锁更新问题,并提供更高效的内存使用和访问速度。以下是Lis...

SpringBoot实现单点登录(SSO)的4种方案

单点登录(SingleSign-On,SSO)是企业应用系统中常见的用户认证方案,它允许用户使用一组凭证访问多个相关但独立的系统,无需重复登录。对于拥有多个应用的企业来说,SSO可以显著提升用户体验...

刚刚,给学妹普及了登录的两大绝学

今天跟大家聊一个比较基础的话题,就是实现登录的方式有哪些?适合刚入行的朋友。华山之Session绝学Session我们称之为会话控制,是一种在服务器端保持会话状态的解决方案。通俗点来讲就是客户...

取消回复欢迎 发表评论: