码迷,mamicode.com
首页 > 其他好文 > 详细

redis 基本

时间:2020-05-27 20:12:43      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:配置   永久   失败   大于   命令执行   序列   开发   检测   查找   

hash、list、set、sorted set,可存储2^32-1个元素

string长度为512m字节,即2^(9+10+10+3)=2^32

 

优点:速度快,数据类型多,可持久化,支持主从备份,水平扩展

 

快的原因:c语言开发 纯内存操作 单进程单线程 epoll多路复用 高效的数据结构

每次传输的数据量小网络不会堵塞

 

 

lua脚本可以实现更强大的功能,例如判断库存大于0的时候才减1

 

用途:

 

String:缓存、分布式锁、计数器等。

List:队列、链表、微博关注人时间轴列表等。

Hash:用户信息、Hash 表等。

Set:去重、赞、踩、共同好友等。

Zset:排行榜

 

HyperLogLog:统计总数

布隆过滤器:判断是否存在

 

Session共享(单点登录)

发布/订阅

 

简单的分布式锁:set k uuid nx px 100 当k不存在时,把k设为uuid,100毫秒过期

锁用完了要 del k,为防止del前线程挂掉,要设置过期时间

expire命令执行前可能宕机或重启,形成永久的锁。所以用set的px参数更好

当前线程A未执行完锁a可能就过期了,然后线程B加了锁b,线程A执行完会删掉锁B,

解决办法是把v设为随机数或者uuid,删的时候只删自己加的锁,这样不会删其他线程的锁,但会出现多个线程同时运行的情况,为避免这种情况,可以开个线程定时检测锁是否存在,如果存在就增加过期时间,这样的话,可能原本线程删锁的同时,新线程恰好增加锁的过期时间,导致删锁失败。

更好的办法是用lua实现原子性

主从架构,可能刚加完锁,还没同步,主就挂了,从变成了新主,另一个线程在新主里加锁成功

 

 

命令文档: 官方 中文

 

exists k key是否存在

keys p 查找所有符合模式p的key

randomKey 随机返回一个key

rename k1 k2 将k1改名为k2

renameNx k1 k2 k2不存在时,将k1改名为k2

del k 删除key

type k 返回k所存储值的类型

dump k 返回序列化的值

move k db 把当前数据库中的key移到数据库db中

 

expire k s 过期时间设为s秒后

pExpire k m 过期时间设为m毫秒后

expireAt k t 过期时间设为t,t是时间戳

pExpireAt k mt 过期时间设为mt,mt是毫秒时间戳

ttl k 返回剩余的时间(秒) ,time to live

pttl k 返回剩余的时间(毫秒)

persist k 移除k的过期时间,k将永久保存

 

 

设置密码:config set requirepass 123456

提供密码:auth 123456

 

Pipeline:插入大数据量时,将多次请求合并为一次,减少请求往返时间。

前提是多次请求之间不能有因果关系。

 

info命令:查看redis状态

config set/get:运行时修改/获取配置项

 

redis 基本

标签:配置   永久   失败   大于   命令执行   序列   开发   检测   查找   

原文地址:https://www.cnblogs.com/ts65214/p/12975864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!