☕基础知识 & 八卦
redis 创始人🧔叫萨尔瓦多·桑菲利波普 Salvatore Sanfilippo(Antirez),意大利人,比起各种名校 buff 加身的互联网大佬,redis 之父只进入了一所普通大学,甚至到了大三辍学去做了系统管理员,可能作者本人也没有想到他会对今天的互联网产生如此大的影响。
redis 默认端口号是 6379
,6379
在手机按键上是 “MERZ” 对应的号码,而 “MERZ” 取自意大利广告女郎 AlessiaMerz 的名字,据说创始人当时也没有多想,给 redis 选择端口号的时候直接就把 “MERZ” 对应的 6379
拿来用了。
作为非关系型数据库(NoSQL),redis 存储方式非常简单,只支持 key-value
模式存储,有点像很多语言库函数里自带的 Map,不过 redis 在性能和功能上比 Map 强大的多。
redis 究竟能干点啥呢?
redis 主要是用来充当缓存用的,在需要高频访问数据的场景,redis 可以帮助传统的数据库减少 IO 操作,常见的场景比如:
- 排行榜
- 秒杀
- 手机验证码
- 发布订阅消息系统…
总之就是数据不是很复杂,用不上关系型数据库,但又对速度有很高的要求,这个时候就该 redis 上场了。
Redis 数据库命令
redis 中默认有 16 个数据库(db[0] ~ db[15]
),默认使用第一个数据库(db[0]
),数据库的数量在配置文件中可以修改。
进入数据库客户端 redis-cli
可以对数据库进行操作,这个是安装 redis 时自带的。
切换数据库:
select 数字
从默认数据库切换到数据库 3,再从数据库 3 切换回默认数据库。
存储内容:
set key value
,redis 是 key-value 型数据库,数据库中的每一个数据都有一个 key 与其对应。向数据库中添加两个数据。
查看数据库中所有的 key:
keys *
目前数据库中有 “name” 与 “age” 两个 key。
查看数据库的大小:
DBSIZE
清除当前数据库:
flushdb
清除数据库以后再次查看数据库大小和 key,会发现它们都为空。
清除全部数据库:
FLUSHALL
分别向数据库 0 与数据库 3 添加两个数据,执行
FLUSHALL
会发现这两个数据库都被清空了。
这里再额外补充一些命令:
命令 | 描述 |
---|---|
exists key | 判断某个 key 是否存在 |
type key | 查看数据类型 |
del key | 删除指定的数据 |
expire key 100 | 为给定的 key 设置过期时间(0 表示永久) |
ttl key | 查看 key 是否过期,-1 表示永不过期,-2 表示已过期 |
Redis 中的数据类型
redis 中有五大常用的数据类型:字符串(String)、列表(List)、集合(Set)、哈希(Hash)、有序集合(Zset),这些在很多高级语言里面都见怪不怪了,然而 redis 还给我们准备了三个针对特定场景的特殊类型:地理位置(Geospatial)、基数统计(Hyperloglog)、位图(Bitmap)。
其中最常用的类型是 String,redis 中的 String 非常强大,不仅能存文本信息,还能存数字,甚至是图片,音频。
先了解个大概,后面的文章来搞一搞这几个数据类型(未完待续…)