redis和memcached的区别。
https://blog.csdn.net/sinat_30474567/article/details/72918141
--------------------------------------------------------------------------------------------------------------------------------------------------------
redis支持哪些数据结构。
五种,String list(列表) set(无序集合) hash zset(有序集合)
redis如何存储一个String的。
Set name
Get name
http://www.runoob.com/redis/redis-data-types.html
--------------------------------------------------------------------------------------------------------------------------------------------------------
redis是单线程的么,所有的工作都是单线程么。
网络请求模块是单线程的,其他是多线程
https://blog.csdn.net/bird73/article/details/79792548
--------------------------------------------------------------------------------------------------------------------------------------------------------
redis的部署方式,主从,集群
分为单节点模式和主从模式(如一主二从)。
redis的哨兵模式
配有哨兵,监控主机,巡逻从机,当主机挂掉时,选举某一台从机为主机
https://www.cnblogs.com/yu421/p/8081544.html
--------------------------------------------------------------------------------------------------------------------------------------------------------
一个key值如何在redis集群中找到存储在哪里。
1、当拿到一个key后, redis 先判断当前库的0号哈希表是否为空,如果为true直接返回NULL。
2、判断该0号哈希表是否需要rehash,因为如果在进行rehash,那么两个表中者有可能存储该key。如果正在进行rehash,将调用一次_dictRehashStep方法,_dictRehashStep 用于对数据库字典、以及哈希键的字典进行被动 rehash,这里不作赘述。
3、根据当前字典与key进行哈希值的计算。
4、根据哈希值与当前字典计算哈希表的索引值。
5、根据索引值在哈希表中取出链表,遍历该链表找到key的位置。一般情况,该链表长度为1。
6、当 ht[0] 查找完了之后,再进行了次rehash判断,如果未在rehashing,则直接结束,否则对ht[1]重复345步骤。
到此我们就找到了key在内存中的位置了。
https://blog.csdn.net/agangdi/article/details/21567199
--------------------------------------------------------------------------------------------------------------------------------------------------------
redis的两种持久化策略:
rdb快照模式,直接将数据存在dump里
aof把修改的命令都存储起来
https://blog.csdn.net/u010785685/article/details/52366977
-----------------------------------------------------------------------------------------------------------------------------------------------------------
redis里面也有事务性,MULTI
,EXEC
,DISCARS
,WATCH这4个命令是redis的基石。其中,multi表示开启一个事务,输入后,会返回ok。而exec表示执行。之前用set命令,将一个个任务都排进队列里了,然后用exec一起执行。
如果在排入队列的时候,就有错,那么会报error,取消所有事务的执行。如果是在exec的时候报错,则对的那几步会执行,而错误的会直接报错,不会回滚,也就是说,redis的不支持事务回滚!原因有2,其一,这些开发中的错误,可以避免,不会放在生产上,所以没关系。其二,为了追求简单快速,所以不支持回滚。
参考文献 :
https://mp.weixin.qq.com/s/WV-IRe2QUWDkCg8KV_GiOA