Redis(二入门及相关基础知识)

什么是Redis

要了解Resis最好就是去官网看下 官网
英文看不懂我们可以google翻译嘛,不过官方介绍Redis的第一句应该是可以很容易看懂:“Redis is an open source (BSD licensed),in-memory data structure store, used as a database,cache and message broker.”

  • Redis是一个开源的,基于内存的数据结构存储,可用作于数据库、缓存、消息中间件。
  • 从官方的解释上,我们可以知道:Redis是基于内存,支持多种数据结构。
  • 从经验的角度上,我们可以知道:Redis常用作于缓存。

为什么要使用Redis

我们知道Redis是基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。
我们可以发现这不就是Java的Map容器所拥有的特性吗,那为什么还需要Redis呢?

  • Java实现的Map是本地缓存,如果有多台实例(机器)的话,每个实例都需要各自保存一份缓存,缓存不具有一致性
  • Redis实现的是分布式缓存,如果有多台实例(机器)的话,每个实例都共享一份缓存,缓存具有一致性。
  • Java实现的Map不是专业做缓存的,JVM内存太大容易挂掉的。一般用做于容器来存储临时数据,缓存的数据随着JVM销毁而结束。Map所存储的数据结构,缓存过期机制等等是需要程序员自己手写的。
  • Redis是专业做缓存的,可以用几十个G内存来做缓存。Redis一般用作于缓存,可以将缓存数据保存在硬盘中,Redis重启了后可以将其恢复。原生提供丰富的数据结构、缓存过期机制等等简单好用的功能。

为什么要用缓存呢?说到底还是为了性能
一般如果我们不使用缓存,用户请求的什么数据都需要频繁的去操作数据库,这种操作是非常消耗资源的,而且如果我们的网站出现了性能问题(访问时间慢),按经验来说,一般是由于数据库撑不住了。因为一般数据库的读写都是要经过磁盘的,而磁盘的速度可以说是相当慢的(相对内存来说)

看看我们没用缓存之前一个请求的完成过程

在这里插入图片描述

如果学过Mybaits、Hibernate的同学就可以知道,它们有一级缓存、二级缓存这样的功能(终究来说还是本地缓存)。目的就是为了:不用每次读取的时候,都要查一次数据库。

有了缓存之后,我们的访问就变成这样了:查询一些缓存中存在的数据我们可以不用经过数据库
在这里插入图片描述

Redis的数据结构

首先还是得声明一下,Redis的存储是以key-value的形式的。Redis中的key一定是字符串,value可以是string、list、hash、set、sortset这几种常用的。

key value
String String(字符串)
String hash(哈希)
String list(列表)
String set(集合)
String setsorted set(有序集合)

值得注意的是:Redis并没有直接使用这些数据结构来实现key-value数据库,而是基于这些数据结构创建了一个对象系统.通俗的来说就是:Redis使用对象来表示数据库中的键和值。每次我们在Redis数据库中新创建一个键值对时,至少会创建出两个对象。一个是键对象,一个是值对象(key是一个对象,value也是一个对象)。

下面我们来详细了解redis的数据结构
需要测试的可以直接在线体验redis不用安装 http://try.redis.io/

1. String

有人说,如果只使用redis中的字符串类型,且不使用redis的持久化功能,那么,redis就和memcache非常非常的像了。这说明strings类型是一个很基础的数据类型,也是任何存储系统都必备的数据类型。

首先我们来看一个String简单的例子
在这里插入图片描述

一些String常用的命令及相关解释

命令 解释
SET key value 设置指定 key 的值
GET key 获取指定 key 的值。
GETRANGE key start end 返回 key 中字符串值的子字符
GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
MGET key1 [key2…] 获取所有(一个或多个)给定 key 的值。
SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
SETNX key value 只有在 key 不存在时设置 key 的值。
SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
STRLEN key 返回 key 所储存的字符串值的长度MSET key value [key value …]同时设置一个或多个 key-value 对。

菜鸟教程中String的命令解释

2. hash

猜你喜欢

转载自blog.csdn.net/qq_42651904/article/details/86177108
今日推荐