一、Reids数据结构介绍
1. Redis时一个key-cakye的数据库,key一般是String类型,不过value类型有很多。
eg.String Hash List Set SortedSet (基本) | GEO BitMap HyperLog (特殊)
2.Redis为了方便学习,将操作不同类型的命令做了分组,在官网可以进行查询。
二、Reids的通用命令
通用指令是部分数据类型的,都可以使用的指令,常见的有:
1.KEYS: 查看符合模板的所有Key,不建议在生产环境设备上使用
eg. KEYS * KEYS a* (模糊查询)
2.DEL: 删除 (一条或多条) 数据
3.MSET:(key value)添加多个键值对
eg. MSET k1 v1 k2 v2 k3 v3
4.EXPIRE: 给一个key设置有效期,有效期到期后该key会被自动删除
eg. ESPIRE age 20 (设置20s有效期)
5.TTL: 查询一个key的剩余有效期
-1: 永久有效
-2: 已经到期
三、String类型
1.String类型,也就是字符串类型,是Redis中最简单的存储类型。其value是字符串。不过根据字符串的格式不同,又可以分为三类:
String: 普通字符串
int: 整数类型,可以自增、自减操作
float: 浮点类型,可以做自增、自减操作
不管是那种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型的最大空间不能超过512M。
2.String类型的常见命令
(1) SET: 添加或者修改已经存在的一个String类型的键值对
(2) GET: 根据KEYhuoqu Strring类型value
(3) MSET: 批量添加多个键值对
(4) MGET: 根据多个key获取多个String类型的value
(5) INCR: 让一个整形的key自增1
(6) INCRBY: 让一个整形的key自增并指定步长,如: incrby num 2 让num值自增2
(7) INCRBYFLOAT: 让一个浮点类型的数字自增并指定步长
(8) SETNX: 添加一个String类型的键值对,前提是这个key不存在,否则不执行(新增)
(9) SETEX: 添加一个String类型的键值对,并且指定有效期
四、Reids中Key的层级格式
1.思考Redis没有类似MySQL中的Table概念,我们该如何区分不同类型的key呢?
例如,需要存储用户、商品信息到redis,有一个用户的id为1,一个商品的id也是1。
2.Key的结构
Redis的key允许有多个单词形成层级结构,多个单词之间用":"隔开,格式如下:
项目名 :业务名 :类型 : id
这个格式非固定,也可以根据自己的需求来删除或添加词条
如果Value是一个Java对象,如一个User对象,可以将对象序列化为JSON字符串后存储:
KEY | VALUE |
project1:user:1 | {"id": 1,"name": "张三","age": 21} |
project1:product:1 | {"id": 1,"name": "小米","price": 5555} |
层级:project ---- user
|-- product
下面各自存储它们的key和value
五、Reids中的Hash类型
1.Hash类型,也叫做散列,其value是一个无序字典,类似于Java中的HashMap结构
2.String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便。
3.Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD
4.Hash类型的常见命令: (一个flied相当于一个属性,如上面表中的age)
(1) HSET key field value: 添加或者修改hash类型key的field的值
(2) HGET key field: 获取一个hash类型key的feild的值
(3) HMSET: 批量添加多个hash类型key的field的值
(4) HMGET: 批量获取多个hash类型key的field的值
(5) HGETALL: 获取一个hash类型的key的所有的field和value
(6) HKEYS: 获取一个hash类型的key的所有field
(7) HVALS: 获取一个hash类型的key中的所有value
(8) HINCRBY: 让一个hash类型的key的字段值自增并指定步长
(9) HSETNX: 添加一个hash类型的key的feild值,前提是这个field不存在,否则不执行
原文地址:https://blog.csdn.net/qwer1234_567/article/details/135266042
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。