- 1、安装redis
Windows安装redis
获取安装包,Windows的Redis安装包需要到以下GitHub链接找到。
1、链接:https://github.com/MSOpenTech/redis。打开网站后,找到Release,点击前往下载页面
2、在下载网页中,找到最后发行的版本(此处是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,点击下载。这里说明一下,第一个是msi微软格式的安装包,第二个是压缩包。
3、双击msi的安装包开始安装,过程中选择添加redis目录到path中,端口默认为6379,并选择防火墙例外,从而保证外部可以正常访问redis服务;舍得最大值为100M。
4、安装完毕后,修改配置文件redis.windows-service.conf,而不是redis.windows.conf,后者是以非系统服务方式启动启程使用的配置文件。
5、找到含有requestpass的地方追加一行,设置密码requestpass 123456(设置后需要重启服务或者访问redis之后再重新设置下,命令config set requirepass “123456”)
6、打开cmd窗口,输入redis-cli并回车,如图说明安装并设置密码成功。
- 2、Redis常用知识
1、redis是什么
redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化。
2、支持的语言
3、redis应用场景
会话缓存(最常用)
消息队列,比如支付
活动排行榜或计数
发布、订阅消息(消息通知)
商品列表、评论列表等
4、redis数据类型
Redis一共支持5中数据类:string(字符串)、hash(哈希)、list(列表)、set(集合)和zset(sorted set 有序集合)。
(1)string(字符串)
它是redis最基本的数据类型,一个key对应一个value,需要注意是一个键值最大存储512MB。
C:\Users\ly>redis-cli
127.0.0.1:6379> set key ‘hello world’
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set key ‘hello world’
OK
127.0.0.1:6379> get key
“hello world”
127.0.0.1:6379> getset key ‘nihao’
“hello world”
127.0.0.1:6379> get key
“nihao”
127.0.0.1:6379> set key ‘11’
OK
127.0.0.1:6379> get key
“11”
127.0.0.1:6379> mset key1 ‘hi’ key2 ‘nihao’ key3 ‘hello’
OK
127.0.0.1:6379> get key1
“hi”
127.0.0.1:6379> get key2
“nihao”
127.0.0.1:6379> get key3
“hello”
(2)hash(哈希)
redis hash是一个键值对的集合, 是一个string类型的field和value的映射表,适合用于存储对象
127.0.0.1:6379> hset redishash 1 ‘001’
(integer) 1
127.0.0.1:6379> hget redishash 1
“001”
127.0.0.1:6379> hmset redishash 1 ‘001’ 2 ‘002’
OK
127.0.0.1:6379> hget redishash 1
“001”
127.0.0.1:6379> hget redishash 2
“002”
127.0.0.1:6379> hmget redishash 1 2
- “001”
- “002”
(3)list(列表)
是redis简单的字符串列表,它按插入顺序排序
127.0.0.1:6379> lpush word hi
(integer) 1
127.0.0.1:6379> lpush word hello#插入index0
(integer) 2
127.0.0.1:6379> rpush word world#插入index-1
(integer) 3
127.0.0.1:6379> lrange word 0 2 - “hello”
- “hi”
- “world”
127.0.0.1:6379> llen word
(integer) 3
127.0.0.1:6379> lpush word xxx
(integer) 4
127.0.0.1:6379> lrange word 0 3 - “xxx”
- “hello”
- “hi”
- “world”
(4)set(集合)
是string类型的无序集合,也不可重复
127.0.0.1:6379> sadd redis redisset
(integer) 1
127.0.0.1:6379> sadd redis redisset1
(integer) 1
127.0.0.1:6379> sadd redis redisset2
(integer) 1
127.0.0.1:6379> smembers redis - “redisset1”
- “redisset2”
- “redisset”
127.0.0.1:6379> sadd redis redisset
(integer) 0
127.0.0.1:6379> smembers redis - “redisset1”
- “redisset2”
- “redisset”
127.0.0.1:6379> smembers redis - “redisset1”
- “redisset2”
- “redisset”
127.0.0.1:6379> srem redis redisset#删除set中的一个value
(integer) 1
127.0.0.1:6379> smembers redis - “redisset1”
- “redisset2”
(5)zset(sorted set 有序集合)
是string类型的有序集合,也不可重复
sorted set中的每个元素都需要指定一个分数,根据分数对元素进行升序排序,如果多个元素有相同的分数,则以字典序进行升序排序,sorted set 因此非常适合实现排名
127.0.0.1:6379> zadd nosql 0 001
(integer) 1
127.0.0.1:6379> zadd nosql 0 002
(integer) 1
127.0.0.1:6379> zadd nosql 0 003
(integer) 1
127.0.0.1:6379> zcount nosql 0 0#数分数在0-0之间的value个数
(integer) 3
127.0.0.1:6379> zcount nosql 0 3
(integer) 3
127.0.0.1:6379> zcount nosql 1 3
(integer) 0
127.0.0.1:6379> zrem nosql 002#移除value为002的值
(integer) 1
127.0.0.1:6379> zcount nosql 0 3
(integer) 2
127.0.0.1:6379> zscore nosql 003#获取003的分数
“0”
127.0.0.1:6379> zrangebyscore nosql 0 10 - “001”
- “003”
127.0.0.1:6379> zadd nosql 1 004
(integer) 1
127.0.0.1:6379> zadd nosql 1 003
(integer) 0
127.0.0.1:6379> zadd nosql 1 002
(integer) 1
127.0.0.1:6379> zadd nosql 2 005
(integer) 1
127.0.0.1:6379> zadd nosql 3 006
(integer) 1
127.0.0.1:6379> zrangebyscore nosql 0 10#依照分数排序 - “001”
- “002”
- “003”
- “004”
- “005”
- “006”
5、redis数据类型
select #选择数据库(数据库编号0-15)
quit #退出连接
info #获得服务的信息与统计
monitor #实时监控
config get #获得服务配置
flushdb #删除当前选择的数据库中的key
flushall #删除所有数据库中的key
6、redis的发布与订阅
redis发布与订阅(pub/sub)是它的一种消息通信模式,一方发送信息,一方接收信息。
下图是三个客户端同时订阅同一个频道
下图是有新信息发送给频道1时,就会将消息发送给订阅它的三个客户端
7、Redis持久化
redis持久有两种方式:Snapshotting(快照),Append-only file(AOF)
Snapshotting(快照)
1、将存储在内存的数据以快照的方式写入二进制文件中,如默认dump.rdb中
2、save 900 1
#900秒内如果超过1个Key被修改,则启动快照保存
3、save 300 10
#300秒内如果超过10个Key被修改,则启动快照保存
4、save 60 10000
#60秒内如果超过10000个Key被修改,则启动快照保存
Append-only file(AOF)
1、使用AOF持久时,服务会将每个收到的写命令通过write函数追加到文件中(appendonly.aof)
2、AOF持久化存储方式参数说明
appendonly yes #开启AOF持久化存储方式
appendfsync always #收到写命令后就立即写入磁盘,效率最差,效果最好
appendfsync everysec#每秒写入磁盘一次,效率与效果居中
appendfsync no #完全依赖OS,效率最佳,效果没法保证
8、Redis性能测试
自带相关测试工具
实际测试同时执行1万的请求
redis-benchmark -h 127.0.0.1 -p 6379 -c 5000 -n 100000
5000个并发连接,100000个请求,检测host为127.0.0.1 端口为6379的redis服务器性能
参考博客https://blog.youkuaiyun.com/middleware2018/article/details/80355418,主要用于个人学习记录