美文网首页
Redis(入门)

Redis(入门)

作者: 七喜丶 | 来源:发表于2021-10-23 18:49 被阅读0次

1.基本了解

概念
Redis (REmote DIctionary Server) 是用 C语言开发的一个开源的高性能键值对(key-value)数据库

特征

  1. 数据间没有必然的关联关系
  2. 内部采用单线程机制进行工作
  3. 高性能: 官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s
  4. 多数据类型支持:StringListHashSetzSet(不常用)
  5. 支持持久性,避免数据丢失,可以进行数据灾害恢复

应用场景

  1. 为热点数据加速查询(主要场景):如热点商品、热点新闻、热点资讯、推广类等高访问信息等
  2. 即时信息查询:如排行榜、网站访问统计、公交到站信息、在线人数信息(网站、聊天室)、设备信号等
  3. 即效性信息控制:如验证码、股票等
  4. 分布式数据共享:分布式集群架构中的 session分离消息队列

2.基本操作

功能性命令

//设置key、value数据
set(key, value)

//根据key查询对应的value,如不存在及返回空(nil)
get(key)

帮助信息&退出指令&清屏指令

//获取帮助文档
help [command]

//获取组中所有命令信息名称 (可在使用tab键自动补充)
help [@group-name]

//退出指令
quite
exit
clt+c (推荐)

//清屏指令
clear

3.数据类型

3.1 Redis 数据存储格式
Redis自身是一个Map,其中所有的数据都采用key:value的形式存储
对于这种数据结构来说,我们用来存储数据一定是一个值前面对应一个名称。我们通过这名称来访问后面的值。按照这种趋势,我们可以对出来我们的储存格式。前面这一部分称为key,后面的一部分称为value,而我们的数据类型,也就一定是修饰valuekey则永远为字符串

3.2 String数据类型

基本操作 说明
set key value 添加/修改数据
get key 获取数据
del key 删除数据
setnx key value 判断性添加数据
mset key1 value1 key2 value2 ... 批量添加/修改数据
mget key1 key2 ... 批量获取数据
strlen key 获取字符串的长度
append key value 追加数据到原数据后部
incr key 设置数值自增1
incrby key increment 设置数值自增increment值
incrbyfloat key increment 设置浮点数自增increment值
decr key 设置数值自减1
decrby key increment 设置数值自减increment值
setex key seconds value 设置数据指定生命周期(单位:秒)
psetex key milliseconds value 设置数据指定生命周期(单位:毫秒)

String数据类型注意事项


3.3 Hash数据类型

如图所示,这种结构叫hash,左边一个为key,右边一个存储空间。这里要明确一点,右边这块儿存储空间叫hash,也就是说hash是指一个数据类型,它指的不是一个数据,是这里变的一堆数据,那么底层就是用hash表的结构来实现

值得注意

  • 如果field数量较少,储存结构优化为类数组结构
  • 如果field数量较多,存储结构使用hashmap结构
基本操作 说明
hset key field value 添加/修改数据
hget key field 获取数据
hgetall key 获取此key的全部数据
hdel key field1 [field2] 删除数据
hsetnx key field value 设置field的值,如field存在及不做操作
hmset key1 field1 value1 field2 value2 ... 批量添加/修改数据
hmget key1 field1 field2 ... 批量获取数据
hlen key field 获取哈希表中字段数量
hexists key field 获取哈希表中是否存在指定的字段
hkeys key 获取哈希表中所有字段名
hvals key 获取哈希表中所有字段值
hincrby key field increment 设置指定字段的数值数据增加increment值 (整数)
hincrbyfloat key field increment 设置指定字段的数值数据增加increment值 (浮点数)

数据操作注意事项

  1. hash类型中value只能存储字符串,不允许储存其它数据结构,不存在嵌套现象。如何数据未获取,会返回空(nil)
  2. 每个hash可以存储232-1个键值对hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
  3. hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问瓶颈

3.4 List数据类型


  • 如何所示,它是双向的,所以它左边右边都能操作,它对应的操作结构两边都进数据。这就是链表的一个存储结构。则往外拿数据是从两边进行操作。如果两端都能拿数据,这就是双端队列,两边都能操作。如果只能从一端进一端出,这个模型就是栈

基本操作 说明
lpush key value1 [value2] ... 从左向右添加/修改数据
rpush key value1 [value2] ... 从右向左添加/修改数据
lpop key 从左获取并移除数据
rpop key 从右获取并移除数据
lrang key start end 获取数据(start:开始下标,end:结束下标)
lindex key index 获取指定下标的数据
llen key 获取数据
lrem key count value 移除指定数量的value
blpop key1 [key2] timeout 规定时间内从左边获取并移除数据(非阻塞 | 秒)
brpop key1 [key2] timeout 规定时间内从右边获取并移除数据(非阻塞 | 秒)

数据操作注意事项

  1. List中保存的数据都是String类型,数据总容量是有限的,最多429496795元素
  2. List具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈形式进行入栈出栈操作
  3. 获取全部数据操作结束索引设置为-1
    4.List可以对数据进行分页操作,通常第一页的信息来自于List,第二页及更多的信息通过数据库的形式加载

3.5.Set数据类型


如图所示,于Hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
基本操作 说明
sadd key value1 value2 ... 添加数据
smembers key 获取全部数据
srem key value1 value2 ... 删除数据
scrad key 获取集合数据总量
sismember key value 判断集合中是否包含指定数据
srandmember key [conut] 随机获取指定count数的集合数据
spop key [count] 随机获取集中的某个数据并将该数据移除集合
sinter key1 key2 获取两个集合的交集
sunion key1 key2 获取两个集合的并集
sdiff key1 key2 获取两个集合的差集
sinterstore destination key1 key2 获取两个集合的交集存储到指定集合中
sunionstore destination key1 key2 获取两个集合的并集存储到指定集合中
sdiffstore destination key1 key2 获取两个集合的差集存储到指定集合中
smove source destination value 获取集合数据移动到指定集合中

数据操作注意事项

  1. Set类型不允许数据重复,如果添加的数据set中已存在,将只留一份
  2. Set虽然与hash的存储结构相同,但无法启用hash中存储值得空间

4.常用指令

4.1 key常用指令

基本操作 说明
del key 删除数据
exists key 判断key是否存在
type key key的类型
rename key newkey 改名
sort 排序
expire key seconds 设置key的有效时间(单位:秒)
pexpire key milliseconds 设置key的有效时间(单位:毫秒)
ttl key 获取key的有效时间(单位:秒)
pttl key 获取key的有效时间(单位:毫秒)
persist key 切换key从有效性转化到永久性
keys pattern 查询key

4.2 DB常用指令

基本操作 说明
select index 切换数据库
ping 判断是否连接成功
move key db 数据移动
dbsize 数据总量
flushdb 清空当下数据库数据
flushall 清空所有数据库数据

相关文章

网友评论

      本文标题:Redis(入门)

      本文链接:https://www.haomeiwen.com/subject/pzkqaltx.html