redis 的基本介绍以及 五种 数据类型

一、redis是什么?

一句话:redis 是一个开源的、使用C语言编写的、支持网络交互,基于内存也可持久化的 key-value (非关系型)数据库

redis作者博客,有兴趣的小伙伴可以去逛一逛:http://github.com/antirez

在这里插入图片描述

二、redis的key命名规约

关于key 的命名,不要太长也不要太短,Key太长越占资源,太短可读性又很差,key 之间的单词用 :(冒号)隔开

emmmm …

一般来说,key 的命名可以这样,项目名称+表名称(mysql或者oracle 等 表名)+ 表中需要存储到redis的字段名字

比如

项目名称叫:project
mysql中用到的表名字叫 user_info
需要存储的字段为 :name
值为:java资讯

那么,结合起来就是这样
project:userInfo:name:Java资讯

一般来讲是上面这种命名方式,最主要还是看公司有没有自己的一套命名方式,要是公司没有强制要求这些,就算你 直接 这样 name:java资讯 ,也是可以的,开发前还是问一问

三、redis的 value 数据结构

redis的value 支持 5 种 数据类型

  • 字符串类型(String) 列表类型 (List)

  • 哈希类型(Hash)

  • 无序集合类型(Set)

  • 有序集合类型(Zset)

这五种类型长什么样呢?简单图解

在这里插入图片描述
下面的演示例子(key )我就不按照什么冒号分开命名了,实际上我们公司也没有这样命名,但你要知道这个命名方式,以防万一

字符串类型(String)

设置值:set+key名称+值

获取值:get key名称

在这里插入图片描述
给同一个key 设置不同的字符串,后者会覆盖前者的值

在这里插入图片描述
还可以通过字符串类型对数值进行操作,redis 自己会将字符串转为数字

incr : 自增1

在这里插入图片描述
incrby : 原数字+几

在这里插入图片描述
3+2 5+9 14+1

同理:
decr :减 1
decrby : 原数字 - 几

在这里插入图片描述

列表类型(List)

lpush:左侧插入元素,也就是在list的头部
lpush+key命名+ 值

在这里插入图片描述
返回的 (integer)1 (integer)2 是元素个数

使用 lrange 命令查看元素,可以看到是在头部插入的 , 0 1 代表角标从 0 到 1 的 元素

在这里插入图片描述
rpush:右侧插入元素,也就是在list的尾部
rpush+key命名+ 值

在这里插入图片描述
list 的应用其实很广泛,我们可以使用list来实现消息队列并且可以保证先后顺序,其次还可以使用lrange实现分页功能

所以说redis 牛就是很牛,还远远不止这些

哈希类型(Hash)

格式1:
存:hset key 值的key 值
取:hget key 值的key 值

第一个key 是redis key-value 的key
第二个key 是 value hash类型又是key-value 的key
可以再看看这张图

在这里插入图片描述
别忘了 redis 是 key-value 存储数据的

在这里插入图片描述
格式2:
设置多个值
hmet key 值key1 值1 值key2 key2 。。。

在这里插入图片描述
获取多个值

在这里插入图片描述
其他一些Hash 操作可以看看官网 https://redis.io/commands/hmset/

无序集合类型(Set)

设置值:sadd key 值
获取所有:smembers key

在这里插入图片描述
可以看到输出值的顺序是没有规律的
试试重复值,再次设置“redis12" 返回 0,说明不可重复

在这里插入图片描述
判断一个元素是否在集合中 用 sismember

在这里插入图片描述
存在返回1,不存在返回 0

有序集合类型(Zset)

语法格式

zadd key 序号 值

在这里插入图片描述
成功返回1

如果相同值则返回0 ,不可重复,表示失败

在这里插入图片描述
是可以存在相同序号的,并列,比赛都有并列第一

在这里插入图片描述
查看所有元素

zrange key名字 0 -1

在这里插入图片描述
如果想查看所有元素并且带上序列号
zrange key名字 0 -1 withscores

在这里插入图片描述
通过打印输出可以看到 zset 是有序的,不可重复

在这里插入图片描述

以上就是redis基本介绍,以及五大类型的存储

当然了,开发中肯定不是用命令行这样操作,下一章节我们将来探讨探讨,在Java中,在代码中 是怎么样操作 使用redis的 以及 在springboot框架中是怎样来使用的 ,以及 两者不同使用情况的区别。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值