判断某个进程有没有在后台启动:
Redis 默认装载 16 个数据库 : 0-15
select index -- 切换数据库。
dbsize -- 查看当前数据库 key 的数量。
flushdb -- 清空当前库; flushall --- 清空所有数据库。
expire key 秒钟,为给定的 key 设置过期时间。ttl key : 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
Redis 命令大全 :http://redisdoc.com/
缓存过期策略配置:
1、启动 Redis数据库: redis--redis的安装文件夹。
用拷贝的配置文件启动Redis
[root@localhost redis]# ./bin/redis-server ./redis.conf
2、我们通过shutdown命令来停止redis服务的运行:
[root@localhost redis]# ./bin/redis-cli shutdown。
3、本地连接:[root@localhost redis]# ./bin/redis-cli
4、常用命令:
del name;keys *
通过del删除key,keys * 显示所有keys
5、String: 二进制安全的,存入和获取的数据相同。Value最多可以容纳的数据长度是512M
getset name open1111 --- 返回旧值,设置新值。
ncr 自增:
假如没有定义 则默认0,假如非数值类型 则报错
127.0.0.1:6379> incr n
(integer) 1
127.0.0.1:6379> get n
"1"
自减 decr ;同自增,默认是 0。
incrby 指定增量值--incrby n3 8 decrby 指定减量值 -- decrby n3 5
append 追加字符串 假如没定义 直接赋值。
strlen -- 字符串长度 strlen key
getrange / setrange
setex (set with expire) 键秒值,setex k4 10 v4
setnx (set if not exist)
mset / mget / msetnx ---- mset k1 v1 k2 v2 k3 v3
6. hash
定义h1 以及username和password字段 值分别是java1234 123456
hset h1 username java1234; hset h1 password 123456。
hget h1 username; hget h1 password。
hmset h2 username open1111 password 23456
hmget h2 username ; hmget h2 password ; hmget h2 username password
hdel删除属性:可以一次删除一个或者多个
hdel h2 username password
hexists判断字段是否存在 1表示存在 0表示不存在 : hexists h1 age
hlen获取hash属性个数 ; hkeys获取所有属性名称 ; hvals获取所有属性值。
7、存储 List:
lpush 方式添加: 从左边开始添加
lpush l1 a b c d
lrange 获取指定方位的集合元素: 从第1个开始 到倒数第一个 也就是最后一个 也就是 所有数据
rpush 从右端开始添加(一般人比较习惯这种方式)
lpop 左侧弹出集合元素 ; rpop 右侧弹出集合元素 lpop l1 -- rpop l1 每次弹出一个元素。
llen查看元素个数 llen l1.
lrem 从指定方向删除指定个数的指定元素:
从左边开始删除2个1:lrem l3 2 1 ----- 从右边开始删除2个3 : lrem l3 -2 3 -- 删除所有2 : lrem l3 0 2
lset 设置集合指定索引的值 (索引从0开始): lset l1 3 xxxx
linsert 在集合里插入指定元素。
8、存储 Set : 和List类型不同的是,Set集合中不允许出现重复的元素。
sadd key member [member ...] 添加set元素。
smembers key 查看指定key集合元素。
srem key member [member ...] 删除元素
sismember key member 判断某个元素是否存在 返回1 表示存在 返回0表示不存在
sdiff计算差集
sinter计算交集
sunion计算并集
scard计算元素总数
srandmember 随机取一个元素
sdiffstore 把差集结果存储到新集合中
sinterstore 把交集结果存储到新集合中
sunionstore把并集结果存储到新集合中
9、存储 Sorted-Set : Sorted-Set中的成员在集合中的位置是有序的
zadd 添加元素 里面包括评分和值 : zadd sort1 5 a 4 b 6 c 集合里的排序是根据评分从小到大排序的
zrange是查找元素 -1代表是最后一个 zrange sort1 0 -1
通过zscore 获取b的评分 : zscore sort1 b
删除元素zrem : zrem sort1 b
zcard 查看集合里的元素个数
withscores 把评分也显示出来 -- zrange sort1 0 -1 withscores
zcount 查找指定评分范围的元素个数 : zcount sort1 20 23
10、通用Key的操作:
查找所有以s开头的key : keys s*
del删除key : del n2 n3 nn
exists判断key是否存在 1表示存在 0表示不存在 : exists n2
rename对key重命名 : rename n n2
type key : 返回 key 的类型。
expire 设置n2 有效时间 : expire n2 120
/******************************************************************
Redis的持久化:
1、RDB 方式: <手动命令: save>
RDB方式 Redis是默认支持的,优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)。
劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。
[root@localhost redis]# vi redis.conf
这里save 900 1 表示 每900秒内至少有1个kery发生变化,就持久化;
save 300 10表示 每300秒内至少有10个key发生变化,就持久化;
save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化。
这里有个dbfilename配置 是 保存的持久化的文件名 默认是dump.rdb
dir ./ 表示文件存储路径是当前路径;
再启动:
总结:平时我们可以定期把rdb文件备份到指定地方 需要恢复的时候 直接把rdb搞到redis下即可。
2、AOF 方式:
AOF 和 RBD 可以共存,Redis 启动时,加载 aof 文件,加载失败(文件出问题),启动失败。
清除aof文件中的垃圾信息:
一倍:100%。
优势:安全性相对RDB方式高很多; 劣势:效率相对RDB方式低很多;
appendonly no默认关闭aof方式 我们修改成yes 就开启
下面那个是默认的aof文件名
这里是三种同步策略:
always 是 只要发生修改,立即同步 (推荐实用 安全性最高)
everysec 是 每秒同步一次
no是不同步
//**************************************************************************
Redis 的事务:
set blance 100 ; set debt 0
//**************************************************************************
Redis 集群:
哨兵模式:反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换成主库。
我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。
Redis 集群没有并使用传统的一致性哈希来分配数据,而是采用另外一种叫做哈希槽 (hash slot)的方式来分配的。redis cluster 默认分配了 16384 个slot,当我们set一个key 时,会用CRC16算法来取模得到所属的slot,然后将这个key 分到哈希槽区间的节点上,具体算法就是:CRC16(key) % 16384。
所以,我们假设现在有3个节点已经组成了集群,分别是:A, B, C 三个节点,它们可以是一台机器上的三个端口,也可以是三台不同的服务器。那么,采用哈希槽 (hash slot)的方式来分配16384个slot 的话,它们三个节点分别承担的slot 区间是:
节点A覆盖0-5460;
节点B覆盖5461-10922;
节点C覆盖10923-16383.
那么,现在我想设置一个key ,比如叫my_name:
set my_name wind
按照redis cluster的哈希槽算法:CRC16(‘my_name’)%16384 = 2412。 那么就会把这个key 的存储分配到 A 上了。
集群有ABC三个主节点, 如果这3个节点都没有加入从节点,如果B挂掉了,我们就无法访问整个集群了。A和C的slot也无法访问。
Redis Cluster主从模式:
edis cluster 为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
单机集群也可以多机集群: