一.摘要
Redis(Remote Dictionary Server)是开源C语音编写,键值对(Key-Value)存储数据库。单线程执行指令(队列排队)。
特性:数据存储内存中,高并发,支持持久化,键过期,消息队列(List链表-广播/发布订阅-消息不丢失/Stream)
生命周期:发送 排队 执行 返回
拓展:pipeline,lua脚本(原子性操作)
方案1:
方案2:
二.安装/操作指令
1.安装
apt-get install redis
2.操作指令
启动连接(默认端口6379)
redis-server
redis-cli -h{host} -p{port}
支持数据类型 Strings,Hashes,Lists Sets Bitmaps HyperLogLog
====global====
keys * 列出key
dbsize key大小
exists key 是否存在key
del key. 删除key
====Strings====
set key value
get key
====Hashes====
hset key field value
hget key field
hdel key field
hlen key
hmset key field val. field2 val2
hexists key field
hkeys key
====Lists====
lpush key value
lpop key
lrange key start end
lindex key index
llen key
blpop key
====Sets====
sadd key member
srem key member
sismember key member
spop key
====Bitmaps====
setbit key offset value
setget key offset
注意:防止Key冲突,Key格式 业务名:对象名:id:[属性]
三.应用
1.场景
①setnx分布式锁
②分布式Session共享
③ 访问限速(短信验证码)
2.集成(intellij-maven)
①使用maven jedis引入
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.6.3</version>
</dependency>
配置redis(application.yml)
连接池注入
设置获取key
②lua引入(原子性)-减少网络开销/原子操作/复用
<dependency>
<groupId>org.luaj</groupId>
<artifactId>luaj-jse</artifactId>
<version>3.0.1</version>
</dependency>
lua语句执行
3.布隆过滤器
布隆过滤器(位图法-判断某个数据是否存在),通过多次hash将一个元素映射位数组中的一个点,这个点是否1 判断集合是否存在。
特点:占用空间更少 高效插入和查询
缺点:结果是概率性的(hash冲突/碰撞)
维度:位长度/hash次数
四.深入
1.sentinel哨兵(主从切换)
2.cluster集群
五.链接
faq:https://github.com/redis/redis-doc/blob/master/topics/faq.md