Redis介绍
-
Redis 是开源的,免费的,高性能的 非关系形数据库。
-
数据存储在内存,以key-value形式存储,类似于我们学习的字典 {name: ‘jack’ }
-
可以设置过期时间,过期自动删除,也可以做持久化。
关系型数据库: MySQL MySQL的缺陷: 1. 读取的时候相对较快, 但是写入数据是比较慢的, 读取速度是1w/s. 写入速度: 1000/s。 2. 读写时容易混淆,会读取出脏数据,需要对Mysql读写做限制. 3. 需要定义严格的表结构,插入数据需要满足完整性约束。 4. 数据存储在磁盘,相对于内存数据库,读写速度慢。
Redis安装
这里以windows系统为例: Redis 支持 32 位和 64 位。这个需要根据操作系统的实际情况选择,这里我们下载64bit。
Redis-x64-5.0.10.msi安装到 自己的windows。
注意:把 redis 的路径加到系统的环境变量里
然后就可以使用客户端连接
Redis通用命令
redis默认有16个 数据库(0-15) select 3 切换到数据库3
info 查看redis服务的信息 info replication查看主从复制的状况
keys * 查看所有的key, 生产环境中不使用 可能阻塞redis
查看key的数据类型 type key1
key 是否存在 exists key1
删除一个key del key1
重命名 rename key key1
清空数据库 flushdb/flushall
String类型
-
key 不宜过长,占用内存,也不宜过短,可读性差 如:user:lauf
-
值,为字符串或者数值,最多存储512
字符串的使用场景
-
作为缓存
-
并发计数,点赞、秒杀
-
带有效期的验证码,过期自动删除
String类型的练习
-
存储生成的短信验证码,方便下次验证,注意:短信验证码的有效期为10分钟
127.0.0.1:6379> set sms_code:1731111111 637905 EX 300 # 存储 1731111111该手机号的短信验证码 637905, 过期时间是5分钟
-
存储标志,防止短信验证码发送过于频繁,1分内只能发送一次
127.0.0.1:6379> set sms_code_flag:1731111111 1 EX 60 # 存储 1731111111该手机号是否发送短信验证码的标志, 过期时间是60s
-
取出短信验证码
127.0.0.1:6379> get sms_code:1731111111 # 取出短信验证码,过期之后,取出为(nil) "637905"
List
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
类似: {name:[1,2,3,4,5,6,]}
插入列表
# 头插法 lpush key val1 val2 ... 127.0.0.1:6379> lpush numbers 1 2 3 (integer) 3 # 尾插法 127.0.0.1:6379> rpush numbers 8 9 0 (integer) 6
更新列表
# 修改某下标的值 lset key index val 127.0.0.1:6379> lset numbers 5 10 # 注意: redis中下标也是从0开始 OK
删除列表
# 头删法
lpop key # 删除第一个值, 并立即返回该值
127.0.0.1:6379> lpop numbers
"3"
# 尾删法
rpop key # 删除最后一个值, 并立即返回
127.0.0.1:6379> rpop numbers
"10"
#列表为空时,阻塞的删除
blpop mylist 10
brpop mylist 10
# 删除指定的值
lrem key count value # 返回的是删除的个数
127.0.0.1:6379>lrem numbers 0 2 # 删除所有值为2的元素
(integer) 4
127.0.0.1:6379>lrem numbers -2 1 # 从表尾开始删除2个值为1的元素
(integer) 2
127.0.0.1:6379> lrem numbers 2 1 # 从表头开始删除2个值为1的元素
(integer) 2
# 截取数据
ltrim key start stop
127.0.0.1:6379> ltrim numbers 2 5 # 保留下标为 【2,5】之间的所有元素,删除其余元素
OK