redis 学习
redis 是使用c 来写的
redis 安装与启动
1、redis 安装,https://www.cnblogs.com/zuidongfeng/p/8032505.html1
2、启动redis,有两种方式:redis-cli ,还有一种是使用./redis-server ../redis.conf (注意,如果使用了密码+ip的形式,则需要这样启动)
3、要使redis可以远程使用ip+端口+密码形式进行链接(要把bind注释掉),需要把redis.conf 里面的equirepass 启用,如下:
这里要特别注意,requirepass前面不要有空格
4、如果设置了密码,使用redis-cli 操作的时候,需要先auth password 进行授权
./redis-cli shutdown
5、使用密码连接的时候,需要如下设置:
protected-mode no
6、防火墙允许端口通过
firewall-cmd --add-port=123/tcp --permanent
--查询所有打开的防火墙端口
firewall-cmd --zone=public --list-ports
--------------------------------------------------------
redis 备份
redis 备份,有两种方式:aof、rdb 。其中aof是基于命令的,而rdb则是基于数据文件的。默认的是aof 模式。这些信息可以在redis.config 中看到
可以aof和rdb混合着用。
--------------------------------------------------------
redis 的集群:
在redis.conf 中,有个sentinel 的参数
--------------------------------------------------------
redis 命令:
flushall 清空所有的redis数据,不过这个命令很危险
select dbindex ,例如:select 1 ,就是切换到db1
append key value 向指定的key追加字符串
strlen key 获得key对应的value的长度
mget key key.. 同时获得多个key的value
mset key value key value key value … 同事设置多个key的value
---------------------------------------------
有关锁的一些知识
1、锁是没失效时间的
2、锁是非阻塞的,获取不了锁,就会失败,当然可以一直等待到获取锁
实现锁
1、数据库
2、redis 的sentNx。这个命令只有在key不存在的情况下为key设置值。所以可以利用这个特性来实现分布式锁的操作
3、利用zookeeper的znode唯一性或者有序的临时最小节点,使用curator客户端会比较简单,已经封装好(zookeeper会保证节点的唯一性)
zookeeper的优势
1. 可靠性高、实现简单
2. zookeeper因为临时节点的特性,如果因为其他客户端因为异常和zookeeper连接中断了,那么节点会被删除,意味着锁会被自动释放
3. zookeeper本身提供了一套很好的集群方案,比较稳定
4. 释放锁操作,会有watch通知机制,也就是服务器端会主动发送消息给客户端这个锁已经被释放了