redis 笔记
redis 概述
redis是本身采用C语言编写。是一个基于内存的K-V(键值对)构成的数据库。而且内置很多数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets),带有范围查询的 有序集合(sorted sets) , bitmaps, hyperloglogs 和 地理空间(geospatial) 索引。 Redis 内置了 复制(replication), LUA脚本(Lua scripting), LRU驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化
redis官方文档地址: redis 命令手册
redis-github地址: https://github.com/redis/redis
redis可以做什么?
分布式缓存,挡在MySQL前的带刀护卫
缓存雪崩,穿透,击穿
内存存储和数据持久化
分布式锁
消息队列
排行榜+点赞
redis环境配置
本次使用的redis版本是7.0.15,是最近的发行版本。在windows10下配置,zip安装。
redis-server下载地址:
Release Redis 7.0.15 for Windows · redis-windows/redis-windows · GitHub
配置步骤:
先下载上述链接的redis版本
配置环境变量
到windows10下搜索栏搜索环境变量就会出现一个选项:编辑系统环境变量
然后找到高级-环境变量-系统变量
找到path这个环境变量选项,在已有的的基础上点击新增。
填入你redis的安装目录
后续两次保存,最后退出即可完成
- 修改redis配置文件
redis安装目录下,有一个redis.conf的配置文件。里面记录了很多redis启动时的默认配置,现在需要修改它正常启动服务。
- 守护进程
将daemonize设置的值设置为yes
- 关闭保护模式
将protece-mo设置为no,如果不关闭这个选项。其他机器无法访问这台机器上的redis服务
- 设置密码
在配置文件找到requirepass 这个选项,原本是被注释起来的。现在取消注释,后面改成你想设置的密码。
redis 基础命令
key常用命令
键(Key)命令
Redis 是 key-value 型数据库,键(Key)命令是 Redis 中经常使用的命令。常用的键命令如下所示:
命令 | 描述 |
---|---|
DEL | 用于删除 key |
DUMP | 序列化给定 key ,并返回被序列化的值 |
EXISTS | 检查给定 key 是否存在 |
EXPIRE | 为给定 key 设置过期时间 |
EXPIREAT | 用于为 key 设置过期时间,接受的时间参数是 UNIX 时间戳 |
PEXPIRE | 设置 key 的过期时间,以毫秒计 |
PEXPIREAT | 设置 key 过期时间的时间戳(unix timestamp),以毫秒计 |
KEYS | 查找所有符合给定模式的 key |
MOVE | 将当前数据库的 key 移动到给定的数据库中 |
PERSIST | 移除 key 的过期时间,key 将持久保持 |
PTTL | 以毫秒为单位返回 key 的剩余的过期时间 |
TTL | 以秒为单位,返回给定 key 的剩余生存时间( |
RANDOMKEY | 从当前数据库中随机返回一个 key |
RENAME | 修改 key 的名称 |
RENAMENX | 仅当 newkey 不存在时,将 key 改名为 newkey |
TYPE | 返回 key 所储存的值的类型 |
redis数据类型
介绍redis中各种数据类型的用法和注意事项
redis字符串命令
set key
设置单个键值对
set k1 v1
get key
获取对应健最新的值
get k1
MSET key vlaue
该命令用于同时设置多个键值
mget k1 name
getanger
获取指定范围内的值
getrange name 0 2
setrange
用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始
语法
redis 127.0.0.1:6379> SETRANGE KEY_NAME OFFSET VALUE
示例:
setrange name 6 "redis"
INCR key
对数字进行递增,但是key必须是数字
语法:
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> INCR age
(integer) 21
getset
设置key的值,并返回key的旧值
127.0.0.1:6379> getset name python
"dockerredis"
127.0.0.1:6379> get name
"python"
HASH 哈希
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
hset key field value
该命令创建一个哈希表并且指定其中一个字段的值
set person name laoyang
hset commit cnt 10
hget key filed value
返回该哈希表中指定字段的值
127.0.0.1:6379> hget person name
"laoyang"