(一)Redis概述及五大常用数据类型

目录

一、Redis的概述与安装

1.1 NoSQL数据库简介

1.2 Redis 概述

1.3 Redis 安装

1.4 Redis 常用指令

二、数据类型

2.1 redis 数据存储格式

2.2 string 类型

2.1.1 string 类型存储格式

2.2.2 string 类型的基本操作命令

2.2.3 string 类型数据的扩展操作命令

2.2.4 string 类型数据操作的注意事项

2.3 hash 类型

2.3.1 hash类型存储格式

2.2.2 hash 类型数据基本操作命令

2.2.3 hash 类型数据扩展操作

2.2.4 hash 类型数据操作的注意事项

2.4 list 类型

2.4.1 list类型存储格式

2.4.2 list 类型数据基本操作命令

2.4.3 list 类型数据扩展操作命令

2.4.4 list 类型数据操作的注意事项

2.5 set 类型

2.5.1 set 类型存储格式

2.5.2 set 数据类型基本操作命令

2.5.3 set 数据类型扩展操作命令

2.6 sorted_set 类型

2.6.1 sorted_set 数据类型存储格式

2.6.2 sorted_set 数据类型基本操作命令

2.6.3 sorted_set 数据类型扩展操作命令

2.6.4 sorted_set 数据类型操作的注意事项

三、Redis键(key)


一、Redis的概述与安装

1.1 NoSQL数据库简介

NoSQL:即 Not Only SQL,意为“不仅仅是SQL”,泛指非关系型数据库,作为关系型数据库的补充。

NoSQL 不依赖业务逻辑方式存储,而以简单的 key-value 模式存储。

  • 不遵循 SQL 标准

  • 不支持 ACID

  • 远超 SQL 的性能

NoSQL 适用场景

  • 对数据高并发的读写

  • 海量数据的读写

  • 对数据高扩展性的处理

NoSQL 不适用场景

  • 需要事务支持

  • 基与 sql 的结构化查询存储,处理复杂的关系

1.2 Redis 概述

概念:Redis 是一个开源的高性能键值对(key-value)数据库。

特征:

①:数据间没有必然的关联关系

②:内部采用单线程机制进行工作

③:高性能。官方提供测试数据,50个并发执行100000个请求,读的速度是110000 次/s,写的速度是81000次/s。

④:多数据类型支持:

  • 字符串类型 string

  • 列表类型 list

  • 散列类型 hash

  • 集合类型 set

  • 有序集合类型 sorted_set

⑤:持久化支持

1.3 Redis 安装

1.4 Redis 常用指令

 quit    exit    //退出
 clear           //清屏
 help 命令名称   help @组名    //获取帮助,可以使用Tab键来切换

help 命令:

二、数据类型

2.1 redis 数据存储格式

  • redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储

  • 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串

2.2 string 类型

2.1.1 string 类型存储格式

  • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型

  • 存储数据的格式:一个存储空间保存一个数据

  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用

2.2.2 string 类型的基本操作命令

命令作用
set key value添加/修改数据
get key获取数据
del key删除数据
mset key1 value1 key2 value2 ......添加/修改多个数据
mget key1 key2 ......获取多个数据
strlen key获取数据字符个数(字符串长度)
append key value追加信息到原始信息后部(如果原始信息存在就追加,否则新建)

2.2.3 string 类型数据的扩展操作命令

命令
incr key将 key 储存的数字增加 1,只能对数字值操作,如果为空,新增值为1
incrby key increment将 key 中存储的数字值增加指定的大小。只能是整数。
incrbyfloat key increment将 key 中存储的数字值增加指定的大小。可以是小数。
decr key将 key 储存的数字减 1,只能对数字值操作,如果为空,新增值为 -1
decrby key increment将 key 中存储的数字值减少指定的大小。
setex key seconds value设置键值的同时,设置过期时间,单位为秒。
psetex key milliseconds value设置键值的同时,设置过期时间,单位为毫秒。

2.2.4 string 类型数据操作的注意事项

string 作为数值操作

  • string 在 redis 内部存储默认就是一个字符串,当遇到增减类操作 incr,decr 时会转成数值型进行计算。

  • redis 所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响。

  • 注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。

string 数据操作不成功的反馈与数据正常操作之间的差异

①:表示运行结果是否成功

  • (integer)0 ---> false 失败

  • (integer)1 --->true 成功

②:表示运行结果值

  • (integer)3 ---> 3 3个

  • (integer)1 --->1 1个

③:数据未获取到

  • (nil)等同于 null

④:数据最大存储量

  • 512MB

⑤:数值计算最大范围(Java中long的最大值)9223372036854775807

2.3 hash 类型

2.3.1 hash类型存储格式

  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

  • 需要的存储结构:一个存储空间保存多个键值对数据

  • hash类型:底层使用哈希表结构实现数据存储

  • hash 存储结构优化

    • 如果 Field 数量较少,存储结构优化为类数组结构

    • 如果 Field 数量较多,存储结构使用 HashMap 结构

2.2.2 hash 类型数据基本操作命令

命令作用
hset key field value给 key 集合中的 field 键赋值 value
hget key field从 key 集合 field 取出 value
hgetall key从 key 集合中取出 field
hdel key field1 [field2]删除数据
hmset key field1 value1 field2 value2 ......批量添加数据
hmset key field1 field2 ......获取多个数据
hlen key获取哈希表中字段的数量
hexists key field查看哈希表 key 中,给定域 field 是否存在。存在返回1,不存在返回0

2.2.3 hash 类型数据扩展操作

命令作用
hkeys key获取哈希表中所有的字段名
hvals key获取哈希表中所有的字段值
hincrby key field increment设置指定字段的数值数据增加指定范围的值。只能是整数。
hincrbyfloat key field increment设置指定字段的数值数据增加指定范围的值。可以是小数

2.2.4 hash 类型数据操作的注意事项

  • hash 类型下的 value 只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,对应的值为(nil)

  • 每个 hash 可以存储 2^31 - 1 个键值

  • hash 类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但是 hash 设计初衷不是为了存储大量对象而设计的,切记不可滥用,更不可将 hash 作为对象列表使用

  • hgetall 操作可以获得全部属性,如果内部 field 过多,遍历整体数据效率就会低,有可能会成为数据访问瓶颈。

2.4 list 类型

2.4.1 list类型存储格式

  • 数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

  • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序

  • 保存多个数据,底层使用双向链表存储结构实现

  • 元素有序,且可重复

2.4.2 list 类型数据基本操作命令

命令作用
lpush key value1 value2 value3 ......添加数据,从左边添加
rpush key value1 value2 value3 ......添加数据,从右边添加
lrange key start end按照索引范围获取元素(从左到右)。(0 -1)表示获取所有
llen key得到长度
lindex key index按照指定索引获取元素
lpop key从list左边移除数据
rpop key从list右边移除数据

2.4.3 list 类型数据扩展操作命令

命令作用
blpop key1 key2 ...... timeout如果在指定时间内放入了元素,就移除,b=block。
brpop key1 key2 ...... timeout如果在指定时间内放入了元素,就移除,b=block
lren key count value移除指定元素 coun:移除的个数 value:移除的值。移除多个相同元素时,从左边开始移除

2.4.4 list 类型数据操作的注意事项

  • list 中保存的数据都是 string 类型的,数据容量是有限的,最多 2^32-1个元素

  • list 具有索引的概念,但是操作数据时通常以队列的形式进行入队出队(rpush,rpop)操作,或以的形式进行入栈出栈(lpush,lpop)操作

  • 获取全部数据操作结束索引设置为 -1(倒数第一个元素)

  • list 可以对数据进行分页操作,通常第一页的信息来自于 list ,第2页及更多的信息通过数据库的形式加载

2.5 set 类型

2.5.1 set 类型存储格式

  • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

  • 不重复且无序

2.5.2 set 数据类型基本操作命令

命令作用
sadd key member1 member2 ......将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
smembers key查看该集合的所有值
srem key member删除集合中的某个元素
scard key返回该集合的元素个数
sismember key member判断集合<key>是否为含有该<value>值,有1,没有0

2.5.3 set 数据类型扩展操作命令

命令作用
srandmember key count从集合中取出 count 个元素
spop key count从集合中选出 count 个元素并移除
sinter key1 key2 ......求两个集合的交集
sunion key1 key2 ......求两个集合的并集
sdiff key1 key2 ......求两个集合的差集
sinterstore destination key1 key2 ......求两个集合的交集,并放入另一个set中
sunionstore destination key1 key2 ......求两个集合的并集,并放入另一个set中
sdiffstore destination key1 key2 ......求两个集合的差集,并放入另一个set中
smove source destination key求指定元素从原集合放入目标集合中

2.6 sorted_set 类型

2.6.1 sorted_set 数据类型存储格式

  • 不重但有序

  • 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式

  • 需要的存储结构:新的存储模型,可以保存可排序的数据

  • sorted_set类型:在set的存储结构基础上添加可排序字段

2.6.2 sorted_set 数据类型基本操作命令

命令作用
zadd key score1 member1 score2 member2 ......插入元素,需要指定 score(用于排序)
zrange key start end (withscore)查看元素(升序),末尾加上wiithscore时,会将元素的score一起打印出来
zrevrange key start end(withscore)查看元素(降序),末尾加上wiithscore时,会将元素的score一起打印出来
zrem key member1 member2 ......移除元素
zremrangebyank key start end按条件移除元素
zremrangebyscore key min max按条件移除元素
zpopmax key [count]按照从大到小的顺序移除 count 个值
zpopmin key [count]按照从小到大的顺序移除 count 个值
zcard key获得元素的个数
zcount min max获得元素在范围内的个数
zinterstore dextination numkeys key1 key2求交集并放入destination中, 其中numkey1为要去交集集合的数目
zunionstore dextination numkeys key1 key2求并集并放入destination中, 其中numkey1为要去并集集合的数目

注意:

  • min 与 max 用于限定搜索查询的条件

  • start 与 stop 用于限定查询范围,作用与索引,表示开始和结束索引

  • offset 与 count 用于限定查询范围,作用于查询结果,表示开始位置和数据总量

2.6.3 sorted_set 数据类型扩展操作命令

作用命令
zrank key member查看某个元素的索引(排名)正序
zrevrank key member查看某个元素的索引(排名)倒序
zscore key member查看某个元素索引的值
zincrby key increment member增加某个元素索引的值

2.6.4 sorted_set 数据类型操作的注意事项

  • score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992

  • score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重

  • sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果

三、Redis键(key)

关于 key 的一些命令

命令作用
keys *查看当前库的所有 key
exists key判断某个key是否存在
type key查看的你key是什么类型
del key删除指定的key
unlink key根据value选择非阻塞删除,仅将key从keyspace元数据中删除,真正的删除会在后序异步操作
expire key 1010秒钟:为给定的key设置过期时间
ttl key查看还有多少秒过期,-1表示永不过期,-2表示已经过期
selec id命令切换数据库
dbsize查看当前数据库的key的数量
flushdb清空当前库
flushall通杀全部库
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值