目录
一、后台启动
修改redis.conf配置文件,将daemonize设置为yes
- 命令:vi redis.conf,注:vi后接的是路径/文件名
- 修改,完成后:wq退出
启动redis(redis-server在/usr/local/bin)
- 命令:redis-server redis.conf,注:redis-server后接的是redis.conf的目录地址
- 查看运行状态:ps -ef | grep redis
通过客户端连接redis:redis-cli
redis退出
- 单实例关闭:
redis-cli shutdown
- 多实例关闭,指定端口关闭:
redis-cli -p 6379 shutdown
- 单实例关闭:
二、Redis键(Key)
keys *
:查看当前库所有key (匹配:keys *1)exists key
:判断某个key是否存在type key
:查看你的key是什么类型del key
:删除指定的key数据unlink key
:根据value选择非阻塞删除expire key 10
10秒钟:为给定的key设置过期时间ttl key
:查看还有多少秒过期,-1表示永不过期,-2表示已过期select
:命令切换数据库dbsize
:查看当前数据库的key的数量flushdb
:清空当前库flushall
:通杀全部库
三、String、list、set、Hash、有序集合Zset
String
set <key><value>
:添加键值对get <key>
:查询对应键值append <key><value>
:将给定的 追加到原值的末尾strlen <key>
:获得值的长度setnx <key><value>
:只有在 key 不存在时 设置 key 的值incr/decr <key>
- 将 key 中储存的数字值增/减1
- 只能对数字值操作,如果为空,新增值为1/-1
incrby / decrby <key><步长>
:将 key 中储存的数字值增减。自定义步长。mset <key1><value1><key2><value2> .....
:同时设置一个或多个 key-value对mget <key1><key2><key3> .....
:同时获取一个或多个 valuemsetnx <key1><value1><key2><value2> .....
:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。getrange <key><起始位置><结束位置>
:获得值的范围,类似java中的substring,前包,后包setrange <key><起始位置><value>用 <value>
:覆写所储存的字符串值,从<起始位置>开始(索引从0开始)。setex <key><过期时间><value>
:设置键值的同时,设置过期时间,单位秒。getset <key><value>
:以新换旧,设置了新值同时获得旧值。
List
lpush/rpush <key><value1><value2><value3> ....
:从左边/右边插入一个或多个值。lpop/rpop <key>
:从左边/右边吐出一个值。值在键在,值亡键亡。rpoplpush <key1><key2>
:从列表右边吐出一个值,插到列表左边。lrange <key><start><stop>
:按照索引下标获得元素(从左到右)lrange mylist 0 -1
:0左边第一个,-1右边第一个,(0-1表示获取所有)lindex <key><index>
:按照索引下标获得元素(从左到右)llen <key>
:获得列表长度linsert <key> before <value><newvalue>
:在的后面插入插入值lrem <key><n><value>
:从左边删除n个value(从左到右)lset<key><index><value>
:将列表key下标为index的值替换成value
Set
sadd <key><value1><value2> .....
:将一个或多个 member 元素加入到集合 key 中,已经存在的member
:元素将被忽略smembers <key>
:取出该集合的所有值。sismember <key><value>
:判断集合是否为含有该值,有1,没有scard<key>
:返回该集合的元素个数。srem <key><value1><value2> ....
:删除集合中的某个元素。spop <key>
:随机从该集合中吐出一个值。srandmember <key><n>
:随机从该集合中取出n个值。不会从集合中删除 。smove <source><destination>
:value把集合中一个值从一个集合移动到另一个集合sinter <key1><key2>
:返回两个集合的交集元素。sunion <key1><key2>
:返回两个集合的并集元素。sdiff <key1><key2>
:返回两个集合的差集元素(key1中的,不包含key2中的)
Hash
hset <key><field><value>
:给集合中的 键赋值hget <key1><field>
:从集合取出 valuehmset <key1><field1><value1><field2><value2>...
:批量设置hash的值hexists<key1><field>
:查看哈希表 key 中,给定域 field 是否存在。hkeys <key>
:列出该hash集合的所有fieldhvals <key>
:列出该hash集合的所有valuehincrby <key><field><increment>
:为哈希表 key 中的域 field 的值加上增量 1 -1hsetnx <key><field><value>
:将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .
Szet
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。
zadd <key><score1><value1><score2><value2>…
:将一个或多个 member 元素及其 score 值加入到有序集 key 当中。zrange <key><start><stop>
:[WITHSCORES] 返回有序集 key 中,下标在之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。 zrangebyscore key minmax [withscores] [limit offset count]
:返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。zrevrangebyscore key maxmin [withscores] [limit offset count]
:同上,改为从大到小排列。zincrby <key><increment><value>
:为元素的score加上增量zrem <key><value>
:删除该集合下,指定值的元素zcount <key><min><max>
:统计该集合,分数区间内的元素个数zrank <key><value>:
返回该值在集合中的排名,从0开始。
四、配置文件
bind
- 默认情况bind=127.0.0.1只能接受本机的访问请求
- 不写的情况下,无限制接受任何ip地址的访问
- 生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉
protected-mode
- 将本机访问保护模式设置no
timeout
- 一个空闲的客户端维持多少秒会关闭,0表示关闭该功能。即永不关闭。
daemonize
- 是否为后台进程,设置为yes
databases 16
- 设定库的数量 默认16,默认数据库为0,可以使用
SELECT <dbid>
命令在连接上指定数据库id
maxclients
- 设置redis同时可以与多少个客户端进行连接。
- 默认情况下为10000个客户端。
- 如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。
maxmemory
- 建议必须设置,否则,将内存占满,造成服务器宕机
- 设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。
五、事务的三个命令Multi,Exec,discard
- 从输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。
- 组队的过程中可以通过discard来放弃组队。
六、Redis的主从复制
slave-priority 10
设置从机的优先级,值越小,优先级越高,用于选举主机时使用。默认100,在后面的哨兵模式中会有提及info replication
打印主从复制的相关信息slaveof <主机ip><port>
成为某个实例的从服务器(配置从服务器)配置哨兵,填写内容
- 自定义的
/myredis
目录下新建sentinel.conf
文件,名字绝不能错 sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。
- 自定义的
启动哨兵
/usr/local/bin
- 执行
redis-sentinel /myredis/sentinel.conf
- 执行
七、集群
合体:
cd /opt/redis-6.2.1/src
(安装目录)在此目录下执行下面命令redis-cli --cluster create --cluster-replicas 1 192.168.11.101:6379 192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389 192.168.11.101:6390 192.168.11.101:6391
注:此处不要用127.0.0.1, 请用真实IP地址
replicas 1
采用最简单的方式配置集群,一台主机,一台从机,正好三组。
-c 采用集群策略连接,设置数据会自动切换到相应的写主机
通过 cluster nodes 命令查看集群信息