Redis学习Day2——Redis基础使用

扩展阅读推荐:

Redis 教程 | 菜鸟教程 (runoob.com)

黑马程序员Redis入门到实战教程_哔哩哔哩_bilibili

细说 Redis 九种数据类型和应用场景_redis数据类型及应用场景-CSDN博客

       

一、命令篇

1.1 Redis的命令分类

        Redis是典型的K-V型数据库,key标识字符串,而value包含了很多种不同的数据类型。大体上可以分为:基本型(String、Hash、List、Set、ZSet)和特殊型(GEO、BitMap、HyperLog)因此,Redis的命令也可以大致分为:通用命令各个类型的命令

1.2 Redis通用命令(不同数据类型都可用)

1. KEYS: 查看所以符合模板的key,(查询导致Redis阻塞,上线环境不建议使用) 

获取 redis 中所有的 key 可用使用 *  : redis 127.0.0.1:6379> KEYS *

2. DEL:删除一个指定的key

DEL key

3. EXISTS:判断key是否存在

若 key 存在返回 1 ,否则返回 0 。通常用于判断 “锁” 

4. EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除

Redis的过期淘汰机制和内存淘汰机制相关

5. TTL:查看一个KEY的剩余有效期

1.3 String类型数据命令【简单存储】

【特点】:包括 String、int、folat三种基本类型,简单的k-v结构

String类型的常见命令
SET

添加    或者覆盖修改已经存在的一个String类型的键值对

SET KEY VLAUE

GET

根据key获取String类型的value

GET KEY

MSET

批量添加多个String类型的键值对

MSET KEY1 VLAUE1 [KEY2 VLAUE2]

MGET

批量根据key获取String类型的value

MGET KEY1 KEY2 

INCR

让一个整型的key自增1

(一般用于统计)

INCRBY

让一个整型的key自增并指定步长

INCRBY KEY SEB

INCRBYFLOAT让一个浮点类型的数字自增并指定步长
SETNX

添加一个String类型的键值对,前提是这个key不存在,否则不执行

(用于给特定业务上锁!!!)

SETEX添加一个String类型的键值对,并且指定有效期

1.4 Hash类型数据命令【与多字段数据相关】

【特点】: 可以将对象中的每个字段独立存储,可以针对单个字段做CRUD

String在多属性场景下的使用效果
String存储类型在多属性对象的使用场景
Hash结构可以方便对每一个数据进行CRUD操作,方便了使用
Hash类型数据常用命令
HSET key field value添加或者修改hash类型key的field的值
HGET key field获取一个hash类型key的field的值
HMSET批量添加多个hash类型key的field的值
HMGET批量获取多个hash类型key的field的值
HGETALL 获取一个hash类型的key中的所有的field和value
HKEYS获取一个hash类型的key中的所有的field
HINCRBY让一个hash类型key的字段值自增并指定步长
HSETNX添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

1.5 List类型数据命令【与消息队列相关】

[特点]:有序、可重复,常用于存储有序数据---> 点赞榜数据                                                           

                                                                       ​​​​ 基于双向链表结构,可以实现类似堆栈、队列的功能

List类型数据常用命令

LPUSH key element ...

RPUSH key element ... 

向列表左侧插入一个或多个元素

向列表右侧插入一个或多个元素

LPOP key

RPOP key

移除并返回列表左侧的第一个元素,没有则返回nil

移除并返回列表右侧的第一个元素

LRANGE key star end返回一段角标范围内的所有元素
BLPOP和BRPOP【阻塞队列】与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

1.6. Set类型数据命令【去重、取共】

特点】:无序、不可重复、交叉并集 --> 去重下单、共同好友

Set类型数据常用命令
SADD key member ... 向set中添加一个或多个元素
SREM key member ... :移除set中的指定元素
SCARD key返回set中元素的个数
SISMEMBER key member判断一个元素是否存在于set中  【去重】
SMEMBERS获取set中的所有元素
SINTER key1 key2 ... 求key1与key2的交集  [共同关注列表]
SDIFF key1 key2 ... key1key2的差集
SUNION key1 key2 ..key1key2的并集

1.7 ZSet(SortSet)类型数据命令【排名相关】

【特点】:可排序、不重复----> 排行榜

ZSet类型数据常用命令

ZADD key score member

添加一个或多个元素到sorted set ,如果已经存在则更新其score值
ZREM key member删除sorted set中的一个指定元素
ZSCORE key member获取sorted set中的指定元素的score值

ZRANK key member

ZREVRANK

获取sorted set 中的指定元素的排名
ZCARD获取sorted set中的元素个数
ZCOUNT key min max统计score值在给定范围内的所有元素的个数
ZINCRBY key increment member让sorted set中的指定元素自增,步长为指定的increment值
ZRANGE key min max按照score排序后,获取指定排名范围内的元素
ZRANGEBYSCORE key min max按照score排序后,获取指定score范围内的元素
ZDIFF、ZINTER、ZUNION求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可

二、使用篇

1. 在业务场景下的 Key结构规范

在Redis开发业务过程中,为了防止Key冲突,提高数据库可维护性和可读性,规定Key的命名结构:

项目名:业务名:类型:id
user相关的keyheima:user:1
product相关的keyheima:product:1

Redis数据库会自动帮我们以 : 分隔,将Key分隔出一个层级结构的表

2. 选择Key合适的使用场景

不同key的业务场景
String

缓存对象场景: String、json类型对象的缓存

常规计数场景: 点赞数、评论、收藏、库存等  【INCR】

分布式锁场景: 给特定业务添加锁  【SETNX】

List消息队列场景: List使用 LPUSH + RPOP 或者 RPUSH + LPOP 实现消息队列
Hash

缓存对象场景: 对于多字段各自要做CRUD的情况

购物车场景: value为典型的多字段独自处理 ,例【id、name、count】

Set

点赞、抽奖、超卖问题: 利用 【去重】 特性

共同关注列表: 利用 【交集】计算特性

ZSet

排行榜、最新列表: 利用【去重+有序权重】特性

电话、姓名排行

BitMap

签到统计场景: 使用比特位0|1 标记签到与否,占用空间极小

判断用户登录状态

Hyper log log百万级网页UV计数: 提供不完全精确计数,正确率99%,效率极高
GEO

地图经纬度距离确认场景

3. 在IDEA中集成Redis实现基本使用

3.1 原生Jedis使用

 想在项目中使用Redis,我们要学会使用Jedis 【https://github.com/redis/jedis】  

  1. 引入依赖
  2. 创建Jedis对象
  3. 建立Redis连接配置
  4. 使用Jedis,命令与Redis命令是一一对应的
  5. 释放资源

引入

连接

测试

释放

连接池拓展:比起原生更加稳定、安全、性能损耗小

3.2 Spring Boot项目整合Jedis

SpringDataRedis介绍

SpringDataRedis命令

API

返回值类型

说明

redisTemplate.opsForValue()

ValueOperations

操作String类型数据

redisTemplate.opsForHash()

HashOperations

操作Hash类型数据

redisTemplate.opsForList()

ListOperations

操作List类型数据

redisTemplate.opsForSet()

SetOperations

操作Set类型数据

redisTemplate.opsForZSet()

ZSetOperations

操作SortedSet类型数据

redisTemplate

通用的命令

 SpringDataRedis使用步骤

  1. 引入依赖
  2. 配置Redis信息
  3. 在使用处注入Redis对象

引入:

配置:

注入:

使用StringRedisTemplate比较好,提供了默认的序列化方式 

使用:

配置RedisConfig创建器对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值