一 Redis基础

1.初识Redis

1.Redis是基于内存的key-value结构数据库


优点:基于内存存储,读写性能高


适合存储热点数据(短时间被被大量用户读取的数据)


2.NoSQL,泛指非关系型数据库,是关系型数据库的补充


3.Redis应用场景:缓存,任务队列,消息队列,分布式锁


4.Liunx版Redis下载地址:https://download.redis.io/releases,下载的redis是源文件,需要进行编译安装,Windows版本百度即可


5.Linux下安装Redis

https://blog.csdn.net/shaopengjie2/article/details/126461079?spm=1001.2014.3001.5502


安装过程中如果报错:You need tcl x.x or newer in order to run the Redis test


则先安装tcl ,然后在继续后面的步骤


yum install -y tcl-devel

1

6.Redis中文文档地址:Redis文档中心


2.运行Redis

1.设置redis后台运行,需要在redis的配置文件redis.conf中将 daemonize 的值修改为 yes。


daemonize yes


2.修改完成之后,运行Redis时需要指定配置文件


redis-server redis.conf

1

(注意文件路径,redis.conf在redis根目录下)


3.进入 Redis 执行相关操作


redis-cli

1

4.设置redis连接密码


在redis.conf配置文件中,打开 requirepass 选项,在后面设置密码即可。


设置完成之后重启Redis服务生效。


requirepass [newpassword]


此时操作Redis则会提示 :(error) NOAUTH Authentication required.说明Redis密码已经启用。


然后提供密码即可正常操作Redis


aush [password]

1

或者在登录Redis时直接提供密码。


# (-h 地址,-p 端口号,-a 密码)

redis-cli -h localhost -p 6379 -a 123456

1

2

5.允许Redis远程连接:注释掉 redis.conf 文件中的 bind 127.0.0.1,即可允许 Redis 远程连接。


# bind 127.0.0.1

# bind 选项用于绑定客户端连接的IP

1

2

开启允许远程连接后需要开放Redis服务端口,重启 Redis 服务。


firewall-cmd --zone=public --add-port=6379/tcp --permanent

firewall-cmd --reload

1

2

6.Redis启动成功后默认提供了16个数据库。默认操作的是Redis的 0 号数据库,使用 select [index] 进行切换


select [index]

1

在 redis.conf 中可对默认数据库的数量进行修改


databases 16 #修改默认数据库数量


select [index]  #修改正在使用的数据库

1

3.Redis数据类型

1.字符串string-存储普通字符串

set key value 设置指定key的值,key相同时后边会覆盖前边的值

get key 获取指定key的值

setex key seconds value 设置指定key的值并且将key的过期时间设置为 seconds 秒,典型场景:验证码

setnex key 只有在key不存在时才设置key的值,典型场景:分布式锁

del key 删除指定key

2.哈希hash-适合存储对象

hash是一个string类型的field和value的映射表,hash非常适合存储对象。



hset key field value 将哈希表key中的字段field设置为value

hget key field 获取指定key的field字段的值

hdel key field 删除指定key的field字段的值

hkeys key 获取哈希表中所有的字段

hvals key 获取哈希表中所有的值

hgetall key 获取哈希表中指定的key的所有字段和值

3.列表list -按顺序插入可重复

Redis列表是简单的字符串列表,按照插入顺序进行排序



lpush key val1 val2 val3… 将一个或多个值插入到列表头部

lrange key start stop 获取指定范围内的元素(stop为-1时查询所有)

rpop key 获取并移除列表中的最后一个元素

llen key 获取列表长度

brpop key1 [key2] timeout 获取并移除元素的最后一个元素,如果列表中无元素则会阻塞表等到超时或发现可弹出元素为止

4.集合set-无序不重复



Redis set是string类型的无序集合,集合成员是唯一的,数据不重复


sadd key member1 member2 向集合添加一个或多个成员

smembers key 返回指定集合key中的全部成员

scard key 获得指定key的成员数

sinter key1 key2 返回给定集合的交集

sunion key1 key2 返回给定集合的并集

sdiff key key2 返回给定集合的差集

srem key member 移除集合中一个或多个成员

5.有序集合 sorted set-有序不重复



sorted set有序集合是string类型的集合,且不允许元素重复,每个元素都会关联一个double类型的分数,redis使用分数来为集合排序。


zadd key member1 member2 向有序集合添加一个或多个成员,已存在则更新该集合

zrange key start stop 通过索引区间返回指定区间内的元素值

zincrby key increment member 有序集合中为指定成员的分数加上增量incremnet

zrem key member1 移除有序集合中一个或多个成员

6.通用命令



4.SpringBoot中使用Redis

在pom.xml中引入redis的坐标


<dependency>

  <groupId>org.springframework.boot</groupId>

  <artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

1

2

3

4

在配置文件中配置基本信息


spring:

 redis:

   host: 192.168.169.133

   port: 6379

   password: 123456

   database: 0

   jedis:

     pool:

       max-active: 8 # 最大连接数

       max-wait: 1ms # 最大阻塞时间

       max-idle: 4

       min-idle: 0