REDIS-开篇

从今天开始准备写一个redis章节的学习文章,主要是为了帮助自己巩固redis相关知识,然后就是做一个学习记录,我将从以下几个方面来总结。

  • reids的安装以及redis的几种数据结构说明。

  • redis的一条指令是如何被发送执行的。

  • redis的持久化方案。

  • 字符串的内部实现原理。

  • redis哨兵模式以及集群模式(时间充裕可能会尝试搭建一套出来)。

  • Java代码中如何使用。

话不多说,直接开干。

redis简介

我们在学习一门技术的时候,首先应该清楚的认识到这门技术是干什么的,能为我们解决什么样的问题。官网是这样介绍的:数百万开发人员用作数据库、缓存、流引擎和消息代理的开源内存数据存储。没错它就是一个开源的、非关系型的数据库,它是基于内存的一种数据库,我们知道内存的一个特点就是快,所以它广泛的使用在项目中,业务中的热点数据都会优先被保存在reids中方便快速读取。

redis安装

由于redis是用c语言开发的,需要先安装gcc环境,如果没有安装可以先安装:

yum install -y gcc

下载:

wget http://download.redis.io/releases/redis-6.2.5.tar.gz

解压:

tar -zxvf redis-6.2.5.tar.gz

安装:

进入到解压目录执行 make

安装完成之后进入安装目录的src下,执行 ./redis-server 即可启动redis,然后执行src目录下的 ./redis-cli即可进入客户端使用。

常见数据结构以及基本使用方式

redis现在已经发展到有9种数据类型了,不过最基础常见的数据类型有5种:字符串、列表、哈希表、集合以及有序集合。

  • 字符串类型(string)

它的基本使用方式:
127.0.0.1:6379> set key value
OK
127.0.0.1:6379> get key
"value"

可以看到我们要在reidis存储一个字符串,直接set就可以了,如果要获取直接get就可以了,这只是基本的存值取值,还有很多其它用法,比如设置存活时间,给字符串追加,获取字符串长度等等,我这里就不一一列出来了,以后在需要使用的时候自己会查就可以了,字符串的底层实现还是比较有意思的 ,我会在后面拿出来专门介绍。

  • 列表(list)

列表类型是一个使用链表结构的有序存储结构,它的元素插入会按照先后顺序存储到链表结构中,因此它的元素操作时间复杂度为O(1)的,但是查询速度为O(n)的,查询比较相对比较慢。

为了直观的观察,我直接采用截图的方式演示效果。可以看到,插入元素可以从左边push也可以从右边push,查询直接采用lrange输入元素的起始位置跟结束位置(-1)表示查所有。

  • 哈希表(hash)

这种数据结构是一个键值对集合,如右图所示,它是一个key对应了,一系列键值对。

  • 集合(Set)

集合是一个无序的集合,并且元素唯一,所以它的存储顺序不会按照插入的先后顺序进行存储。sadd 表示表示添加元素,smembers 表示查询集合的所有元素,可以看到于插入元素顺序不一致,scard表示查看集合有多少个元素。

  • 有序集合(zset)

有序集合相比集合类型多了一个排序属性,有序集合中的每个值都有一个排序属性(score),有序集合中的元素也是不能重复的。从下图可以看到在为有序集合添加元素的时候,会为元素添加一个分值,而这个分值就决定了这个元素在集合中的位置,分值越小越靠前。

以上就是简单说明redis几种基本数据结构,其实redis已经有很多种数据结构了,如果感兴趣或者实际使用到可以详细去了解。

总结

本年文章主要简单介绍了Redis是什么,它是一个非关系型的数据库,它的数据都是以Key-Vlaue形式存储在数据库中的,业务中常常会把热点数据存储在redis中,可以提升查询效率,当然redis还可以实现其它许多功能,比如实现消息队列、session共享等功能;然后还简单说明了redis安装过程,还简单介绍了几种基本数据类型的使用,其实它们的底层实现使用了很多种数据结构,比如SDS、链表、跳跃表、压缩列表等等,如果感兴趣后面会介绍。

下一篇文章我会介绍一条redis指令是如何被发送到服务器解析被执行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值