Alan's blog Alan's blog
首页
思考感悟
技术学习
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Alan wu

前端小时
首页
思考感悟
技术学习
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机基础

  • 架构设计

  • HTTP网络

  • Node

  • 小程序

  • 设计

  • JavaScript

  • HTML&CSS

  • 浏览器

  • webpack

  • 运维

    • 你不知道的Nginx服务器的一些知识
    • 服务端小白也能搭建上线系统
    • 关于Redis的一些基础知识
      • 01 前言
      • 02 redis数据类型
      • 03 发布订阅模式
      • 04 小结
  • Vue&React

  • 技术
  • 运维
alanwu
2020-04-11
目录
01 前言
02 redis数据类型
03 发布订阅模式
04 小结

关于Redis的一些基础知识

Redis的知识其实已经是后端要掌握的技术,但是之前笔者使用过Redis做一些缓存,主要是存储用户的登录信息seesion,我觉得这个东西其实是很有用的,所以今天就深入一点看一下具体的用法。

# 01 前言

目前自己能想到的Redis的作用很局限,毕竟自己也没有用过其他的高级特性,其实不仅可以用于缓存,还可以用于做一些排行榜/计数、session共享、消息队列以及发布订阅等。

Redis的应用场景非常广泛,虽然Redis是一个key-value的内存数据库,但在实际场景中,简单key-value就非常有用,如面对数据高并发的读写、海量数据的读写等这些其实都是网站的简单但是非常重要的功能,我觉得还是有必要了解一些关于redis的事情和相关知识点。

# 02 redis数据类型

redis是一种支持Key-Value等多种数据结构的存储系统,可用于多种业务场景。提供字符串、哈希、列表、队列、集合结构直接存取。

数据类型

  • string(字符串)
  • list(列表)
  • hash(散列)
  • set(集合)
  • zset(有序集合)

string

Redis所有的数据结构都是以唯一的key字符串作为名称,通过key来获取相应数据。Redis 的字符串是动态字符串,是可以修改的字符串,内部为当前字符串实际分配的空间 capacity 一般要高于实际字符串长度 len。常见命令:

  • set:设置一个键值对,如 set name alan
  • get:获取键值,如get name
  • exists:是否存在键名,如exists name
  • del:删除键名,如del name
  • expire:设置过期时间,如expire name 5,5s后过期

list

list是一个列表,它可以提供常见的栈和队列的形式,不同的是你操作的方法。当元素操作之后便会弹出且会自动删除,内存就会被回收,常用与异步队列的使用。常见命令:

  • rpush:从右边进入,如rpush subject Chinese Math English
  • llen:查看长度,如llen subject
  • lpop:左边弹出,如lpop subject,就会弹出Chinese
  • rpop:右边弹出,如rpop subject,就会弹出English

hash

Redis 的字典相当于 Java 语言里面的 HashMap,它是无序字典。内部实现结构上同Java 的 HashMap 也是一致的,同样的数组 + 链表二维结构。常见命令:

  • hset:用于为哈希表中的字段赋值,如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作,如果字段已经存在于哈希表中,旧值将被覆盖,如hset myhash field1 "foo"
  • hget:用于返回哈希表中指定字段的值,如hget myhash field1
  • hexists:用于查看哈希表的指定字段是否存在,如hexists myhash field1
  • hdel:用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略,如hdel myhash field1
  • hgetall:用于返回哈希表中,所有的字段和值,返回值里,紧跟每个字段名之后是字段的值

set

set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  • sadd:将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略
  • sinter:返回给定所有给定集合的交集
  • sunion:返回给定集合的并集
  • smembers:返回集合中的所有的成员
  • sdiff:返回给定集合之间的差集,差集的结果来自前面的KEY ,而不是后面的KEY
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}
1
2
3
4

zset

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。常见方法:

  • zadd:用于将一个或多个成员元素及其分数值加入到有序集当中
  • zrange:返回有序集中,指定区间内的成员,其中成员的位置按分数值递增(从小到大)来排序
  • zrevrange:返回有序集中,指定区间内的成员,其中成员的位置按分数值递减(从大到小)来排列
  • zcard:用于计算集合中元素的数量
  • zrem:用于移除有序集中的一个或多个成员,不存在的成员将被忽略

# 03 发布订阅模式

安装及启动redis

安装redis的步骤很简单,去官网安装,直接下一步即可。安装完成之后我们进到redis的目录,启动redis服务就可以了。

redis-server.exe redis.windows.conf
1

redis服务已经启动且监听6379端口

开启redis客户端

我们在该目录下再起两个窗口,一个用来发布消息,一个用来订阅消息。输入redis-cli.exe -h 127.0.0.1 -p 6379就可以进入redis客户端了。

左边进行订阅,右边进行发布

# 04 小结

关于redis的基础知识其实还有很多,这里就不多介绍了。大家平时可以去官网或者菜鸟看一下。最近心生倦意,行文比较匆忙,当品茶一杯以清静心灵,就此落笔。

编辑 (opens new window)
上次更新: 2023/05/13, 23:08:05
服务端小白也能搭建上线系统
浅谈Vue的虚拟DOM技术

← 服务端小白也能搭建上线系统 浅谈Vue的虚拟DOM技术→

最近更新
01
HTTPS:让数据传输更安全
06-15
02
沙盒:页面和系统之间的隔离墙
06-15
03
CSRF攻击:陌生链接不要随便点
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Alan Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式