redis使用手册pdf下载 redis使用步骤_数据

 

目录

安装

上传安装文件

解压安装

安装Redis

修改配置

Redis服务器操作命令

Redis命令

入门

添加jar包依赖

String类型示例

Hash示例

List示例

缓存击穿与缓存穿透、缓存雪崩

缓存穿透

概念

解决方法

缓存击穿

概念

解决方案

缓存雪崩

概念

解决方法


安装

上传安装文件

redis使用手册pdf下载 redis使用步骤_数据_02

解压安装

1、解压

tar -zxvf  redis-5.0.5.tar.gz

2、删除安装包

rm -f redis-5.0.5.tar.gz

这一步随意

3、修改Redis文件目录名称

redis使用手册pdf下载 redis使用步骤_数据_03

安装Redis

两个操作  1、make  2、 make install

redis使用手册pdf下载 redis使用步骤_数据_04

修改配置

找到redis目录下的redis.conf文件,执行如下命令:

vim redis.conf

1、关闭IP绑定

redis使用手册pdf下载 redis使用步骤_数据_05

2、关闭保护模式

redis使用手册pdf下载 redis使用步骤_redis使用手册pdf下载_06

3、开启后台启动

redis使用手册pdf下载 redis使用步骤_缓存_07

Redis服务器操作命令

redis-server redis.conf 默认条件下 前台启动

redis-cli -p 6379 进入客户端 exit/quit/ctrl+c 退出客户端

redis-cli -p 6379 shutdown 或者 ps -ef |grep redis kill -9 PID号 关闭redis服务器.

Redis命令

Redis里面存储类型有五种:String、List、Set、Hash、Sort Set。

下方的命令都需要进入客户端执行

1、String类型

命令

说明

案例

set

添加key-value

set username admin

get

根据key获取数据

get username

strlen

根据key获取值的长度

strlen key

exists

判断key是否存在

exists name 返回1存在 0不存在

del

删除redis中的key

del key

Keys

用于查询符合条件的key

keys * 查询redis中全部的key keys n?me 使用占位符获取数据 keys nam* 获取nam开头的数据

mset

赋值多个key-value

mset key1 value1 key2 value2 key3 value3

mget

获取多个key的值

mget key1 key2

append

对某个key的值进行追加

append key value

type

检查某个key的类型

type key

select

切换redis数据库

select 0-15 redis中共有16个数据库

flushdb

清空单个数据库

flushdb

flushall

清空全部数据库

flushall

incr

自动加1

incr key

decr

自动减1

decr key

incrby

指定数值添加

incrby 10

decrby

指定数值减

decrby 10

expire

指定key的生效时间 单位秒

expire key 20 key20秒后失效

pexpire

指定key的失效时间 单位毫秒

pexpire key 2000 key 2000毫秒后失效

ttl

检查key的剩余存活时间

ttl key -2数据不存在 -1该数据永不超时

persist

撤销key的失效时间

persist key

2、Hash类型

命令

说明

案例

hset

为对象添加数据

hset key field value

hget

获取对象的属性值

hget key field

hexists

判断对象的属性是否存在

HEXISTS key field 1表示存在 0表示不存在

hdel

删除hash中的属性

hdel user field [field ...]

hgetall

获取hash全部元素和值

HGETALL key

hkyes

获取hash中的所有字段

HKEYS key

hlen

获取hash中所有属性的数量

hlen key

hmget

获取hash里面指定字段的值

hmget key field [field ...]

hmset

为hash的多个字段设定值

hmset key field value [field value ...]

hsetnx

设置hash的一个字段,只有当这个字段不存在时有效

HSETNX key field value

hstrlen

获取hash中指定key的值的长度

HSTRLEN key field

hvals

获取hash的所有值

HVALS user

3、List类型

命令

说明

案例

lpush

从队列的左边入队一个或多个元素

LPUSH key value [value ...]

rpush

从队列的右边入队一个或多个元素

RPUSH key value [value ...]

lpop

从队列的左端出队一个元素

LPOP key

rpop

从队列的右端出队一个元素

RPOP key

lpushx

当队列存在时从队列的左侧入队一个元素

LPUSHX key value

rpushx

当队列存在时从队列的右侧入队一个元素

RPUSHx key value

lrange

从列表中获取指定返回的元素

LRANGE key start stop Lrange key 0 -1 获取全部队列的数据

lrem

从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作: · count > 0: 从头往尾移除值为 value 的元素。 · count < 0: 从尾往头移除值为 value 的元素。 · count = 0: 移除所有值为 value 的元素。

LREM list -2 “hello” 会从存于 list 的列表里移除最后两个出现的 “hello”。 需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。

Lset

设置 index 位置的list元素的值为 value

LSET key index value

注意:Redis的List集合为双端循环列表,两端都可以插入数据,可以当队列使用,也可以当做栈使用

队列:一端插入数据,另一端取出数据

栈:从哪端插入数据就从哪端取出数据

除了以上信息,其余内容可以去官网学习

官网地址:https://redislabs.com/

4、事务控制

Redis中的操作可以添加事物的支持,一项任务需要多个redis命令去配合完成的话,要进行事物的控制

redis使用手册pdf下载 redis使用步骤_数据_08

入门

添加jar包依赖

<!--spring整合redis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
        </dependency>

String类型示例

redis使用手册pdf下载 redis使用步骤_缓存_09

setnx方法要求key不存在时才会做赋值操作,key存在时,不做修改

redis使用手册pdf下载 redis使用步骤_redis_10

在赋值的同时设置超时时间,如果调用两个方法的话则丧失了操作的原子性

redis使用手册pdf下载 redis使用步骤_redis使用手册pdf下载_11

Hash示例

redis使用手册pdf下载 redis使用步骤_redis_12

List示例

redis使用手册pdf下载 redis使用步骤_redis使用手册pdf下载_13

缓存击穿与缓存穿透、缓存雪崩

缓存穿透

概念

缓存穿透是指在缓存和数据库中都不存在某个数据,而用户在不停地请求这个不存在的数据,会给数据库造成很大的压力

解决方法

1、接口层增加校验,用ID做基础校验,比如说id<0的请求直接拦截

2、对于缓存和数据库都不存在的数据,可以将键值对设置为key-null,存活时间设置短一些,可以防止用户用同一个ID在短时间内发起的暴力访问。

缓存击穿

概念

缓存击穿是指在缓存中没有找到数据但是数据库中存在数据,使得高并发访问同一个数据时大量的请求直接去访问数据库,对数据库造成巨大的压力

解决方案

1、设置热点数据永不过期

2、后台设置一个定时任务,定时的刷新缓存中的数据

3、检查更新

4、加锁

  • 在获取数据的方法上加锁,可以避免大量请求同时去获取数据,可以避免缓存击穿,但是在数据正常存在时,由于加锁的缘故使得效率较低
  • 在从数据库获取数据的代码上加锁,在缓存正常时不会影响效率,但是缓存失效后,请求还是会访问数据库,由于有锁,会造成阻塞
  • 在从数据库获取数据的代码上加锁,但是在访问数据库之前要求在访问一次缓存,双重判断,在第一个请求访问数据库后,后续请求虽然还是阻塞状态,但是会从缓存中获得数据
  • 用互斥锁解决上面的问题

 

缓存雪崩

概念

缓存雪崩是指缓存中的数据的key值在某一个时间段大量过期,导致请求都去访问数据库,造成数据库的压力过大。

与缓存击穿的区别在于:缓存击穿是大量请求访问同一个数据

                                       缓存雪崩是大量不同请求访问不同的数据

不过两者都是要去访问数据库。

解决方法

1、设置热点数据永不过期

2、将数据的过期时间错开设置,可以设置为随机值,防止大量的key在同一个时间过期

3、分布式部署的话可以将不同的热点数据布置在不同的缓存中