【Redis】基础知识入门

文章目录

Redis 入门

SQL && NoSQL

SQL

  • 1、数据组织形式为结构化 ,每张数据库表有明确的字段要求
  • 2、有关联的
  • 3、SQL查询
  • 4、事务特性:ACID

NoSQL:

  • 数据组织形式为非结构化 ,常见键值对文档
  • 2、无关联的
  • 3、非SQL
  • 4、事务特性:BASE

总结

Redis 介绍

Redis(Remote Dictionary Server)诞生于2009年,远程词典服务器,是一个基于内存的键值型NoSQL数据库

具体特征:

  • 键值型(key-value),value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具有原子性
  • 低延迟、速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

Redis 常见命令

Redis数据结构介绍

Redis 是一个key-value的数据库,key一般是string类型,value的类型一般如下:

通用命令

通用命令是部分数据类型的,都可以使用的指令,常见的有:

1、KEYS:查看符合模板的所有key,不建议在生产环境使用

2、DEL:删除指定的key

3、EXISTS:判断key是否存在

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

5、TTL:查看一个key的剩余有效期

通过 help [commond] 可以查看一个命令的具体使用方法

String 类型

基本内容介绍

String 类型 即 字符串类型,是redis中最简单的存储类型,其value是字符串,根据字符串的格式不同,可以将其分为三类:

  1. string 普通字符串
  2. int 整数类型,可以做 自增 自减 操作
  3. float 浮点类型,可以做 自增 自减 操作

不管是哪种形式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512M

常见的命令

SET: 添加 或 修改 一个已经存在的string类型的键值对
GET: 根据key 获取 string类型的value
MSET: 批量添加多个string类型的键值对
MGET: 根据多个key 获取多个string类型的value
INCR: 让一个整型的key自增1
INCRBY: 让一个整形的key 自增并指定步长
INCRBYFLOAT: 让一个浮点型的key 自增并指定步长
SETNX: 添加一个string类型的键值对,前提是这个key不存在,否则不执行
SETEX: 添加一个string类型的键值对,并设置有效期

key 的结构

问题:Redis 没有像MySQL中table的概念,如何区分不同类型的key?

redis的key允许由多个单词形成层级结构,多个单词之间用:隔开,我们可以根据自己的业务需求设置相应的词条加以区分

e.g:项目名称:业务名:类型:id

Hash类型

基本内容介绍

Hash类型,也叫散列,其value是一个无序字典。

Hash结构可以将对象中的每个字段独立存储,可以针对每个字段做CRUD

例如

有一个对象结构如下:

go 复制代码
type UserInfo struct {
	UserName string `json:"username"`
	Age int         `json:"age"`
}

// 有一个对象初始化如下:
userInfo := UserInfo {
	UserName: "GGbond",
	Age: 18,
}

若采用string结构将其存储至redis,则需要将对象序列化为json后存储,具体如下:

KEY VALUE
test:1 {"username": "GGbond", "age":18}

若采用hash存储:

|---------|-----------|-----------|
| KEY | VALUE ||
| KEY | field | value |
| test:1 | username | GGbond |
| test:1 | age | 18 |

常见命令

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
HVALS:获取一个hash类型的key中的所有value
HINCRBY:让一个hash类型key 的字段值自增长并指定步长
HSETNX: 添加一个hash类型的key的field值,前提是这个field值不存在,否则不执行

List类型

基本内容介绍

Redis中的List类型可以看作是一个双向链表结构,可以支持正向检索 与 反向检索

具体特征:

  • 有序
  • 元素可重复
  • 插入删除快
  • 查询速度一般

使用场景:常用于存储一个有序数据,例如 点赞列表

常见命令

LPUSH key element ...:向列表左侧插入一个或多个元素
LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
RPUSH key element ...:向列表右侧插入一个或多个元素
RPOP key:移除并返回列表右侧的第一个元素,没有则返回nil
LRANGE key start end:返回一段角标内的所有元素
BLPOP BRPOP:与LPOP 和 RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

Set类型

基本内容介绍

Redis的Set结构可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

常见命令

SADD key member ... :向set中添加一个或多个元素
SREM key member ... : 移除set中的指定元素
SCARD key: 返回set中元素的个数
SISMEMBER key member:判断一个元素是否存在于set中
SMEMBERS:获取set中的所有元素
SINTER key1 key2 ... :求key1与key2的交集

SortedSet 类型

基本内容介绍

Redis的SortedSet是一个可排序的set集合,SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

常见命令

ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
ZREM key member:删除sorted set中的一个指定元素
ZSCORE key member : 获取sorted set中的指定元素的score值
ZRANK key member:获取sorted set 中的指定元素的排名
ZCARD key:获取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即可

相关推荐
科技小花2 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸2 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain2 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希3 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神3 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员3 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java3 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿4 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴4 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU4 小时前
三大范式和E-R图
数据库