下载安装
1. 官网:https://redis.io
2. 中文网:https://www.redis.net.cn/
3. window系统 3.2.100版本下载:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100
安装为window服务:
打开cmd,进入到redis解压后的目录中,执行:redis-server.exe --service-install redis.windows.conf --service-name Redis3.0 --port 6379
卸载掉服务:
sc delete redis3.0
启动服务:
通过cmd指定到该redis目录,使用命令:redis-server.exe,也可以双击redis-server.exe运行
启动客户端,连接服务器:
启动另一个cmd,在该redis目录下,使用命令:redis-cli.exe,也可以双击redis-cli.exe运行
redis-cli.exe -h 127.0.0.1 -p 6379 -a requirepass
(-h 服务器地址 -p 指定端口号 -a 连接数据库的密码[可以在redis.windows.conf中配置],默认无密码)
常用的redis服务命令:
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
重命名服务:redis-server --service-name name
重命名服务,需要写在前三个参数之后
windows下redis配置密码:
打开 redis.windows.conf 或者 redis.windows-service.conf 找到 #requirepass foobared ,在下面添加 【requirepass 密码】
在redis目录下执行 redis-server.exe redis.windows.conf 或者 redis-server.exe redis.windows-service.conf 启动服务
redis-cli.exe -a 密码 | redis-cli.exe -h 127.0.0.1 -p 6379 -a 密码
redis的数据结构:
redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
value的数据结构:
1) 字符串类型 string
2) 哈希类型 hash : map格式
3) 列表类型 list : linkedlist格式。支持重复元素
4) 集合类型 set : 不允许重复元素
5) 有序集合类型 sortedset:不允许重复元素,且元素自动排序
字符串类型 string
1. 存储: set key value
2. 获取: get key
3. 删除: del key
4.一次存多个数据:mset a 1 b 2 c 3 一次获取多个数据:mget a b c
5.获取长度:strlen key
6.追加信息到原始信息后面(原始信息不存在,则创建),返回的是数据总长度:append key value
string 类型数据的扩展操作:
大型企业级应用中,分表操作是基本操作,使用多张表存储同类型数据,但是对应的主键 id 必须保证统一性,不能重复。
Oracle 数据库具有 sequence 设定,可以解决该问题,但是 MySQL数据库并不具有类似的机制,那么如何解决?
解决方案:
设置数值数据增加指定范围的值
incr key 每次执行加1
incrby key increment 指定增加的数值
incrbyfloat key increment 指定增加的浮点数值
设置数值数据减少指定范围的值
decr key 每次指定减1
decrby key increment 指定减少的数值
“最强女生”启动海选投票,只能通过微信投票,每个微信号每 4 小时只能投1票。
电商商家开启热门商品推荐,热门商品不能一直处于热门期,每种商品热门期维持3天,3天后自动取消热门。
新闻网站会出现热点新闻,热点新闻最大的特征是时效性,如何自动控制热点新闻的时效性。
解决方案:
设置数据具有指定的生命周期
setex key seconds value seconds表示多少秒
psetex key milliseconds value milliseconds表示毫秒
Tips 2:redis 控制数据的生命周期,通过数据是否失效控制业务行为,适用于所有具有时效性限定控制的操作
string 类型应用场景:
主页高频访问信息显示控制,例如新浪微博大V主页显示粉丝数与微博数量
解决方案:
在redis中为大V用户设定用户信息,以用户主键和属性值作为key,后台设定定时刷新策略即可
eg: user:id:3506728370:fans → 12210947
eg: user:id:3506728370:blogs → 6164
eg: user:id:3506728370:focuss → 83
例如当粉丝数增加时执行:incr user:id:3506728370:fans 对于数据的变更更新更实时
在redis中以json格式存储大V用户信息,定时刷新(也可以使用hash类型)
eg: user:id:3506728370 → {"id":3506728370,"name":"春晚","fans":12210862,"blogs":6164, "focus":83}
例如当粉丝数增加时,需要先读取json中的数据,修改后再重新存放回去,可以一次性修改多个数据
Tips 3:redis应用于各种结构型和非结构型高热度数据访问加速