【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
很早就听说过redis,但是却没有好好使用过。记得读书的时候,大家用的比较多的是微软的access和sql server。等到2009年毕业的时候,linux开始流行起来,mysql使用的越来越多。后来,也就是2010以后,redis这种key-value的内存数据库也开始被大规模的使用。当然,redis的流行有很多原因,速度的优化、内存的扩大、内存条成本降低,这些都是促成redis流行的原因。
文章目录
1、下载redis
wget http://download.redis.io/releases/redis-6.0.8.tar.gz
2、代码编译
tar xzvf redis-6.0.8.tar.gz
cd src
make
如果遇到编译错误,安装pkgconf即可,
sudo apt-get install pkgconf
3、最主要的工具
./redis-cli
./redis-server
4、判断数据库有没有连上
ping
5、设置数据
set
get
6、订阅机制
publish
subscribe
7、保存和加载
save
bgsave
8、过期时间
expire
9、选中数据库和清空数据库
select
flushdb
10、平台支持
同时支持linux和win32平台
11、redis和mysql配合
熟悉redis的朋友都知道,redis要比mysql快很多,这主要是因为redis的数据都是保存在内存里面,没有外设io操作。因此可以把redis看成是mysql的一层缓存。
mysql转换成redis数据,最简单的方法就是用table+id作为key,value1+value2+…value n作为一个完整的value即可。
以读为例,需要读数据的时候,首先检查redis有没有对应的数据,如果有,读redis;如果没有,需要读mysql的同时,加载到redis数据库。这非常重要。
以写为例,需要写数据的时候,分别写入redis和mysql即可。如果redis有数据,直接写入redis,同时写到一个mysql的独立操作线程里面即可,不需要等操作完成再返回。如果没有,那么等独立操作线程所有操作结束后,从mysql读数据,写入redis,更改redis,再继续向独立操作线程发送操作指令,显得稍微复杂点。上面等待独立线程操作结束的动作,主要是为了防止操作队列有数据删除动作,或者key过期时间很短,造成操作队列还没有执行完,这样对会对后面的mysql写入造成影响。
因为我们时刻要牢记,redis数据有可能被多个客户端程序访问,也就是读写可能同时发生,所以一定要考虑redis和mysql的一致性问题。这种情况,或许变成串行化访问,也就是有一个总的数据处理thread,统一负责redis和mysql的同步工作比较好,使用rpc协议就能完成。
另外一点就是,在发生程序异常的时候,一定要确保独立写进程都操作完毕。当然,有的时候为了验证的需要,需要save一下redis数据。
12、参考资料
可以参考这个redis教程,使用还是很方便的。
13、代码阅读的价值
本身redis作为cache使用的,就像cpu里面的icache、dcache一样。另外一方面,redis的代码比较简练,非常适合拿来进行学习,特别是早期的版本,比如2.2版本,很适合拿来看一看,读一读。