自学内容网 自学内容网

从零开始学redis 01

SQL与NOSQL

SQLNOSQL
数据结构结构化(表)非结构化(JSON)
数据关联关联的(表之间的数据关联)无关联的(数据松散)
查询方式SQL查询非SQL查询
事务特性ACIDBASE
存储方式磁盘内存
扩展性垂直水平
使用场景

1.数据结构固定

2.相关业务对数据安全性、一致性要求较高

1.数据结构不稳定

2.对一致性、安全性要求不高

3.对查询性能有要求

认识Redis

诞生于2009年,全称是Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型NOSQL数据库。

特征

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

安装Redis

官网下载传送门

mac m1安装示例(其它操作系统安装大同小异)

下载你需要版本的软件包放到指定的目录下进行解压

cd 到解压好的redis目录

运行下面的命令进行编译测试

sudo make test 

中途可能会提示你安装make工具,按提示安装即可,运行完成之后

运行下面命令,开始正式安装

sudo make install

启动redis,终端运行下面的命令,当然也可以按配置文件启动(添加密码什么的)

redis-server

# 带上配置文件
redis-server redis.conf

好像是后台运行的,关了还有,下次启动起不来注意查询之前的redis进程是否还存在。

测试redis是否正常运行

redis-cli -p 6379

图形化管理工具安装

传送门

通用命令

  • KEYS
  • DEL
  • EXISTS
  • EXPIRE 
  • TTL

KEYS

查看符合模板的所有key

kEYS pattren

DEL 

删除一个指定的key

DEL key [key...]

EXISTS 

判断key是否存在

EXISTS key [key...]

EXPIRE TTL

设置查看key有效期

Redis数据类型

String类型

字符串类型,是redis中最简单的存储类型,可以包含任何数据,例如jpg图片或者序列化的对象等,底层都是以字节数组形式存储,最大能存储512MB的数据。

常用命令

  • SET:添加或修改已经存在的一个String类型的键值对
  • GET:根据key获取对应的value
  • MSET:批量添加多个String类型的键值对
  • MGET:批量获取多个key的value
  • INCR:让一个整型的key自增1
  • INCRBY:让一个整型的key按指定的步长自增
  • INCRBYFLOAT:让一个浮点型数字按指定的步长增长
  • SETNX:添加一个String类型的键值对,前提是要添加的key不存在
  • SETEX:添加一个String类型的键值对,并且指定有效期

KEY命名规范

加前缀,分层次构建,更方便管理

项目名:业务名:类型:id

如定义:

user:1
equipment:1

根据具体项目规范来定义key值。

如果value是一个Java对象,可以先将对象序列化成Json再存入,这样后面取出来操作也非常方便。

KEY        VALUE
user:12138

{

        "id":"12138",

        "name":"路明非",

        "age":18

}

Hash类型

String类型是将对象序列化成JSON字符串后进行存储,当需要进行修改对象中的某个字段时非常不方便。

Hash类型可以将对象中的每个字段独立存储,可以针对单个字段进行CRUD操作

KEYVALUE
fieldvalue
user:12138id        12138
name路明非
age18

常用命令:

  • 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类型

一个双向链表结构。

特征:

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

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表,系统的实时信息变化(网络、内存、cpu)

常用命令:

  • LPUSH  key  element:向列表左侧插入一个或多个元素
  • LPOP  key:移除并返回列表左侧的第一个元素,没有则返回nil
  • RPUSH  key  element:向列表右侧插入一个或多个元素
  • RPOP  key:移除并返回列表右侧的第一个元素
  • LRANGE  key  star  end:返回一段角标范围内的所有元素(0, -1)返回所有

Set类型

可以看做是一个value为null的HashMap。

特征:

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

常用命令:

  • 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:求key1与key2的差集
  • SUNION  key1  key2:求key1与key2的并集

SortedSet类型

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

特征:

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

因为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即可,例如:

升序获取sorted  set  中的指定元素的排名:   ZRANK  key  member

降序获取sorted  set  中的指定元素的排名:   ZREVRANK  key  memeber

redis的Java客户端

点进去可以去git上看源码

springboot集成redis操作,查看

传送门


原文地址:https://blog.csdn.net/2301_76354366/article/details/136331035

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!