Redis安装+基础入门

01.redis是什么

Redis(Remote Dictionary Service) 是互联网技术领域中使用最广泛的存储中间件,Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。它的版本更新非常的快,功能也越来越强大,最初只是用来作为缓存数据库,现在已经可以用它来实现消息队列了。

 Redis 官方地址为:http://redis.io

Redis 的作者是一名意大利人,网名 Antirez,长相还是过得去的,感兴趣的可以 Google 一下。知道为什么 Redis 的默认端口是 6379 吗?

据他本人说是6379对应但是的一位歌手“MERZ”但当时还有“愚蠢”的意思。有点类似于现在的坤坤。

02.安装 Redis

Redis针对不同操作系统有不同安装方式,这篇入门就以windows为例(官网并不推荐使用windows安装,但本教程基于新手就没有使用linux)

下载地址

Releases · microsoftarchive/redis · GitHub(打不开可以找我要网盘)

有两种安装方式,第一种是 msi 的方式,双击运行后安装;第二种是免安装,绿色版,只需要把 zip 包解压就可以了。(个人使用的是第二种方法)

安装好后,打开命令行,进入(cd)到当前解压后的目录,输入启动命令:

redis-server redis.windows.conf

特别注意,因为win11cd进目录后并不会在目录下运行。解决办法如下:

./redis-server redis.windows.conf

如果还不行可能是安装包下载出问题了(本人就只遇到这个问题)

然后你就会看到 Redis 启动后的欢迎画面

 

还有一些其他的提示信息:

  • Redis 当前的版本号为 3.0.504
  • 端口是 6379
  • 进程 ID,也就是 PID 为 18516
  • Redis 官方地址为:http://redis.io

那如何停止服务呢?

  • Ctrl+c
  • 直接暴力按左上角叉叉

03.Redis的数据结构

Redis有五种基础数据结构String、Hash、List、Set、SortedSet,也是学 Redis 必须掌握的。除此之外,还有 HyperLogLog、Geo、Pub/Sub,算是高级数据结构了。

我们一个个来解读

  1. 字符串(Strings):这是最基本的Redis数据类型。二进制安全的字符串可以包含任何数据,例如jpg图片或者序列化的对象。其最大长度可以达到512 MB。

  2. 列表(Lists):这是由字符串构成的双向链表。可以在其头部或者尾部添加元素,因此,Redis列表可以用作堆栈(stack)或队列(queue)。列表的主要功能包括:push、pop、获取某一部分的元素等。

  3. 集合(Sets):这是包含字符串的无序集合。你可以通过使用命令,添加、删除和测试元素是否存在。因为它是无序的,所以不能通过索引获取某个元素。

  4. 有序集合(Sorted sets):和Sets类似,Sorted Sets也是字符串的集合,不同的是每个元素都会关联一个浮点数优先级或分数(score)。元素总是根据分数进行排序,所以我们可以非常快速地获取一个分数范围内的元素集合。

  5. 哈希(Hashes):这是字符串字段和字符串值之间的映射,所以它们是键值对的集合

String 结构使用非常广泛,比如说把用户的登陆信息转成 JSON 字符串后缓存起来,等需要取出的时候再反序列化一次。

小伙伴们应该都知道,Java 的 String 是不可变的,无法修改。Redis 的 String 是动态的,可以修改的,两者不同哦。关于 Redis 的 String 结构,我觉得老钱的 Redis 教程上讲得非常明白,大家一起拜读下。

 

Redis 的 String 在内部结构实现上类似于 Java 的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。如上图所示,当前字符串实际分配的空间为 capacity,一般高于实际的字符串长度 len。当字符串长度小于 1M 时,扩容是对现有空间的成倍增长;如果长度超过 1M 时,扩容一次只会多增加 1M 的空间。最大长度为 512M。

04.实操Redis

Redis 的解压目录下有一个名叫 redis-cli.exe 的文件,这是 Redis 自带的一个客户端工具,可以用来连接之前我们启动好的 Redis 服务。双击启动它。

以下是完整的键值对测试命令,小伙伴们可以按照格式动手实操一把。

 

1)set 命令用来存储一个键值对,在本例中,name 为 key,cmower 为 值。

2)get 命令用来获取一个键值对。

3)exists 命令用来测试一个键值对是否存在,(integer) 1 表示存在,(integer) 0 表示不存在。

4)del 命令用来删除一个键值对,(integer) 1 表示执行成功,(integer) 0 表示执行失败。

5)当键值对删除后,再通过 get 命令获取时,结果就为 (nil) 。

问题来了nil是什么意思它是 Objective-C、Swift、Ruby、Lua 等编程语言中的一个关键字,更详细的解释可以看一下《Programming in Lua 程序设计第二版》:

nil 是一种类型,它只有一个值 nil,它的主要功能是用于区别其他任何值,就像之前所说的,一个全局变量在第一次赋值前的默认值就是 nil,将 nil 赋予一个全局变量等同于删除它,Lua 将 nil 用于表示一种“无效值(non-value)”的情况,即没有任何有效值的情况。

想了解 Redis 命令的具体使用方法,可以参考以下链接:

Redis 命令参考 — Redis 命令参考

是 Redis Command Reference 和 Redis Documentation 的中文翻译版

05.在Java中使用Redis

第一步,在项目中添加 Jedis(Java 和 Redis 的混拼) 依赖

(Maven):
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency>

如果版本不同在version后修改你的版本

(gradle):
dependencies {
    implementation 'redis.clients:jedis:3.2.0'
}

版本不同同理

第二步,新建 UserInfo(用户信息)类:

package org.example;

public class UserInfo {
    private String name;
    private int age;

    public UserInfo(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}


第三步,在项目中添加 Gson(用于序列化和反序列化用户信息) 依赖:

(Maven):
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
    <scope>compile</scope>
</dependency>
(Gradle):
dependencies {
    implementation 'com.google.code.gson:gson:2.8.6'
}

第四步,新建测试类 RedisTest:

import com.google.gson.Gson;
import org.example.UserInfo;
import redis.clients.jedis.Jedis;

public class RedisTest {
    private static final String REDIS_KEY = "user";
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost", 6379);

        Gson gson = new Gson();
        UserInfo userInfo = new UserInfo("最喜欢摆烂", 19);

        jedis.set(REDIS_KEY, gson.toJson(userInfo));
        UserInfo getUserInfoFromRedis = gson.fromJson(jedis.get(REDIS_KEY),UserInfo.class);

        System.out.println("get:" + getUserInfoFromRedis);

        System.out.println("exists:" + jedis.exists(REDIS_KEY));
        System.out.println("del:" + jedis.del(REDIS_KEY));
        System.out.println("get:" + jedis.get(REDIS_KEY));
    }
}

下面解释一下这段代码:

1)REDIS_KEY 常量为存储用户信息到 Redis 的 key。

2)在 Jedis 的帮助下,Java 连接 Redis 服务变得非常简单,只需要一行代码:

Jedis jedis = new Jedis("localhost", 6379);

参数分别是主机名,端口号。

存储键值对用 set() 方法,获取键值对用 get() 方法,判断键值对是否存在用 exists() 方法,删除键值对用 del() 方法。

3)Gson 是谷歌提供的一个开源库,可以将 Java 对象序列化为 JSON 字符串,同样可以将 JSON 字符串反序列化(解析)为匹配的 Java 对象。

使用起来也非常简单,toJson() 方法将对象转成 JSON 字符串,fromJson() 方法将 JSON 字符串反序列化对象。

下面是程序输出结果:

get:UserInfo{name='最喜欢摆烂', age=19}
exists:true
del:1
get:null

06、鸣谢

以上就是Redis安装加初步入门的全部内容了(最主要是我也只学到这里哈哈哈哈),redis能做的远远不止这些,如果你在学习的过程中遇到了问题,欢迎随时和我交流,虽然我也是个菜鸟,但我有热情啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Redis 是一个开源的内存数据库,以其高性能和灵活的数据结构而闻名。《Redis 入门到精通》是一本介绍 Redis 使用和深入学习的书籍,适合有一定编程基础的开发者或对数据库有一定了解的人士。 这本书从介绍 Redis 的概述和安装入手,帮助读者了解 Redis 的基本概念和使用方法。接着,书中详细介绍了 Redis 中常用的数据结构,如字符串、列表、哈希、集合和有序集合,并提供了示例代码和运用场景,让读者能够深入理解这些数据结构的使用和特点。 此外,书中还介绍了 Redis 的高级特性和应用,如发布-订阅模式、事务、持久化、复制等。这些内容帮助读者进一步了解 Redis 的技术原理和性能优势,帮助开发者更好地应用 Redis 解决实际问题。 《Redis 入门到精通》还包括了性能优化、监控和故障处理等实用的内容,读者可以学习如何配置和优化 Redis 以提升系统性能,并学习如何排查和解决常见故障。 总体而言,《Redis 入门到精通》是一本全面介绍和学习 Redis 的实用书籍,通过深入浅出的讲解和实例,帮助读者从入门到精通 Redis,并能够灵活运用 Redis 解决实际问题。无论是想要了解 Redis基础知识还是深入学习 Redis 的高级特性,都可以从这本书中获得帮助和指导。 ### 回答2: Redis(Remote Dictionary Server)是一个开源的、基于键值对的存储系统。它以其高性能、易使用和丰富的功能而备受推崇。《Redis入门到精通》PDF是一本针对Redis的学习资料,从入门到深入掌握Redis的各个方面进行了详细介绍。 这本书首先介绍了Redis的基本概念和原理,包括键值对存储、数据类型、持久化等核心概念。然后,它深入讲解了Redis的各种高级功能,如发布订阅、事务、Lua脚本等。此外,书中还包含了丰富的示例代码和实际应用场景,帮助读者更好地理解和应用Redis。 《Redis入门到精通》PDF适合各个层次的读者。对于初学者,它提供了系统全面的入门指导,从安装配置开始,一步步引导读者熟悉和掌握Redis的使用。对于有一定经验的开发者,它提供了高级特性和实战案例,让读者深入了解Redis的内部机制和最佳实践。 此外,这本书还介绍了Redis的性能调优和集群部署等内容,帮助读者在实际应用中充分发挥Redis的潜力。无论是Web应用的缓存、消息队列还是实时数据分析,Redis都应该是开发者的首选。 总之,《Redis入门到精通》PDF是一本权威而实用的Redis学习资料,通过系统而全面的介绍,帮助读者从入门到精通Redis,更好地应用Redis解决实际问题。无论是初学者还是有经验的开发者,都可以从中获益匪浅。 ### 回答3: 《Redis 入门到精通》是一本介绍 Redis 数据库的权威指南。Redis 是一种高性能、可扩展的键值存储系统,常用于缓存、消息队列、实时统计和分布式会话管理等领域。 该书从 Redis基础概念入手,包括安装配置、数据结构、持久化、集群部署等内容,帮助读者快速上手 Redis。接着介绍了 Redis 的高级功能,例如发布订阅、事务、Lua 脚本编写、并发控制等,让读者深入了解 Redis 的各种用法和技巧。 《Redis 入门到精通》还涵盖了 Redis 在实际应用中的最佳实践,包括如何优化性能、如何设计和实现分布式系统等。此外,书中还介绍了常见的 Redis 开源工具和框架,如 Redisson、Spring Data Redis 等,帮助读者更好地利用 Redis 构建高效的应用程序。 该书内容丰富、结构清晰,适合初学者和有一定经验的开发人员。无论是想快速上手 Redis,还是想深入学习 Redis 的高级用法,本书都能提供详细的指导和实例演示。 总之,通过阅读《Redis 入门到精通》这本书,读者可以系统地学习和掌握 Redis 数据库的各个方面,从入门到精通。无论是作为开发人员、DBA 还是系统架构师,都能在实际工作中充分发挥 Redis 强大的功能和性能优势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值