你离高薪 offer 只差一个Redis入门,我是认真的

说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的。由于公司小,业务量小,Redis 基本派不上用场。不外,最近计划把系统升级一下,顺带把当下时髦的手艺入个门,“与时俱进”嘛,虽然进的有“一点点”晚(注重双引号)。

作为一名富有责任心的手艺博主,我以为有必要把我入门 Redis 的历程分享出来,供一些小伙伴作为参考。要是我那里写错了,别虚心,过来给我一巴掌,就行了(温柔点,别打肿,影响颜值就不好了)。

你离高薪 offer 只差一个Redis入门,我是认真的

01、Redis 是什么

Redis 是互联网手艺领域中使用最普遍的存储中间件,它是 Remote Dictionary Service 三个单词中加粗字母的组合。你别说,组合起来后念着挺自然的。

Redis 以超高的性能、完善的文档、简练的源码著称,国内外许多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。它的版本更新异常的快,功效也越来越壮大,最初只是用来作为缓存数据库,现在已经可以用它来实现新闻队列了。

可以这么说吧,掌握 Redis 已经变成了一项后端工程师必须具备的基础技术。

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

据说是手机键盘上“MERZ”的位置决议的,小伙伴们可以打开自己手机上九宫格键盘感受一下。“MERZ”是什么意思呢?据说是“愚蠢”的意思。这?是不是感受程序员的生涯中照样有蛮多神秘色彩的?

你离高薪 offer 只差一个Redis入门,我是认真的

02、安装 Redis

Redis 针对差其余操作系统有差其余安装方式,我们这篇入门的文章就以 Windows 为例吧。

下载地址如下:

https://github.com/MicrosoftArchive/redis/releases

Windows 最新的版本是 3.2.100。从下图中可以看得出,Redis 的体积异常的轻量级,还不到 6 M。体积越小,让我感受 Redis 越牛逼,你是不是也有这种感受?

你离高薪 offer 只差一个Redis入门,我是认真的

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

你离高薪 offer 只差一个Redis入门,我是认真的

内里有一份英文版的文档——Windows Service Documentation.docx,教我们若何安装 Redis 服务、若何启动、若何关闭,以及若何使用自定义端口启动服务。

打开下令行,进入到当前解压后的目录,输入启动下令:

redis-server redis.windows.conf

然后你就会看到 Redis 启动后的迎接画面,左边这个盒子感受好有艺术感啊!有小伙伴知道是怎么天生的吗?

你离高薪 offer 只差一个Redis入门,我是认真的

另有一些其他的提醒信息:

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

那若何住手服务呢?可以直接按下 Ctrl+C 组合键——粗暴、壁咚(固然可以直接点右上角的叉号)。

PS:原本想用 Linux 版或者 OSX 版的,怕入门的小伙伴没有环境。后面可以整一个。

03、Redis 的数据结构

Redis 有 5 种基础数据结构,String、Hash、List、Set、SortedSet,也是学 Redis 必须掌握的。除此之外,另有 HyperLogLog、Geo、Pub/Sub,算是高级数据结构了。我们这篇入门的文章就以 String 为例吧。

String 结构使用异常普遍,比如说把用户的上岸信息转成 JSON 字符串后缓存起来,等需要取出的时刻再反序列化一次。

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

你离高薪 offer 只差一个Redis入门,我是认真的

Redis 的 String 在内部结构实现上类似于 Java 的 ArrayList,接纳预分配冗余空间的方式来削减内存的频仍分配。如上图所示,当前字符串现实分配的空间为 capacity,一样平常高于现实的字符串长度 len。当字符串长度小于 1M 时,扩容是对现有空间的成倍增长;若是长度跨越 1M 时,扩容一次只会多增添 1M 的空间。最大长度为 512M。

04、实操 Redis

好了好了,我估量许多小伙伴们已经整装待发,准备实操一把了。这就来。

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

你离高薪 offer 只差一个Redis入门,我是认真的

这个客户端照样异常智能的,当键入下令的时刻,会跳出对应的提醒

你离高薪 offer 只差一个Redis入门,我是认真的

当按下空格跟进关键字的时刻,对应位置上的提醒会自动消逝。

你离高薪 offer 只差一个Redis入门,我是认真的

以下是完整的键值对测试下令,小伙伴们可以根据花样着手实操一把。

LDheatmap | SNP连锁不平衡图(LD)可视化,自己数据实现版!

> set name cmower
OK
> get name
"cmower"
> exists name
(integer) 1
> del name
(integer) 1
> get name
(nil)

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 下令的详细使用方式,可以参考以下链接:

http://redisdoc.com/index.html

Redis Command ReferenceRedis Documentation 的中文翻译版,良心吧?

05、在 Java 中使用 Redis

有些小伙伴可能会问,“二哥,我是一名 Java 程序员,我该若何在 Java 中使用 Redis 呢?”这个问题问得好,这就来,这就来。

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

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency>

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

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 +
                '}';
    }

    // getter / setter
}

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

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
    <scope>compile</scope>
</dependency>

第四步,新建测试类 RedisTest:

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("缄默王二"18);

        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=18}
exists:true
del:1
getnull

完全符合我们的预期,perfect!

你离高薪 offer 只差一个Redis入门,我是认真的

06、鸣谢

好了,我亲爱的小伙伴们,以上就是本文的全部内容了,是不是看完后很想实操一把 Redis,赶忙行动吧!若是你在学习的历程中遇到了问题,迎接随时和我交流,虽然我也是个菜鸟,但我有热情啊。

另外,若是你想写入门级其余文章,这篇就是最好的类型。

我是缄默王二,一枚有趣的程序员。若是以为文章对你有点辅助,请微信搜索「 缄默王二 」第一时间阅读,回复【666】更有我为你经心准备的 500G 高清教学视频(已分门别类)。

本文 GitHub 已经收录,有大厂面试完整考点,迎接 Star。

原创不易,莫要白票,请你为本文点个赞吧,这将是我写作更多优质文章的最强动力。

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/8060.html