下载地址:https://github.com/MSOpenTech/redis/tags
添加/修改数据
set key value
获取数据
get key
删除数据
del key
添加/修改多个数据
mset key1 value1 key2 value2
mget key1 key2 获取多个数据
strlen key 获取数据字符个数(字符串长度)
append key value 追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
数值操作
incr key 加一
incrby key increment 加n
incrbyfloat key increment
decr key
decrby key increment
设置数据具有指定的生命周期
setex key seconds value
psetex key milliseconds value
hset key field value 添加/修改数据
获取数据
hget key field
hgetall key
hdel key field1 [field2] 删除数据
hmset key field1 value1 field2 value2 添加/修改多个数据
hsetnx key field value 如果对应field右值则什么也不做,否则设置值
hmget key field1 field2 … 获取多个数据
hlen key 获取哈希表中字段的数量
hexists key field 获取哈希表中是否存在指定的字段
获取哈希表中所有的字段名或字段值
hkeys key
hvals key
设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment
添加/修改数据
lpush key value1 [value2] ……
rpush key value1 [value2] ……
获取数据
lrange key start stop
lindex key index
llen key
获取并移除数据
lpop key
rpop key
规定时间内获取并移除数据
blpop key1 [key2] timeout
brpop key1 [key2] timeout
brpoplpush source destination timeout
移除指定数据
lrem key count value count代表移除多少个(list中可能会有重复的值)
添加数据
sadd key member1 [member2]
获取全部数据
smembers key
删除数据
srem key member1 [member2]
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key member
随机获取集合中指定数量的数据
srandmember key [count]
随机获取集合中的某个数据并将该数据移出集合
spop key [count]
求两个集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
将指定数据从原始集合中移动到目标集合中
smove source destination member
添加数据
zadd key score1 member1 [score2 member2]
获取全部数据(指定名次)
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
删除数据
zrem key member [member …]
按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
条件删除数据
zremrangebyrank key start stop
zremrangebyscore key min max
获取集合数据总量
zcard key
zcount key min max
集合交、并操作
zinterstore destination numkeys key [key …]
zunionstore destination numkeys key [key …]
获取数据对应的索引(排名)
zrank key member
zrevrank key member
score值获取与修改
zscore key member
zincrby key increment member
设置指定key对应偏移量(位)上的bit值,value只能是1或0
setbit key offset value
获取指定key对应偏移量上的bit值
getbit key offset
对指定key按位进行交、并、非、异或操作,并将结果保存到destKey中
bitop op destKey key1 [key2…] op: and:交 or:并 not:非 xor:异或
统计指定key中1的数量
bitcount key [start end]
基数
基数是数据集去重后元素个数HyperLogLog 是用来做基数统计的,运用了LogLog的算法{1, 3, 5, 7, 5, 7, 8} 基数集: {1, 3, 5 ,7, 8} 基数:5
添加数据pfadd key element [element …]
统计数据
pfcount key [key …]
合并数据
pfmerge destkey sourcekey [sourcekey…]
耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数.误差范围:基数估计的结果是一个带有 0.81% 标准错误的近似值
删除指定key
del key
获取key是否存在
exists key
获取key的类型
type key
为指定key设置有效期
expire key seconds
pexpire key milliseconds
expireat key timestamp
pexpireat key milliseconds-timestamp
获取key的有效时间
ttl key (key不存在返回-2,如果存在设置了有效期返回剩余有效期,没有设置有效期返回-1)
pttl key
切换key从时效性转换为永久性
persist key
查询key
keys pattern
keys * 查询所有
keys it* 查询所有以it开头
keys *heima 查询所有以heima结尾
keys ??heima 查询所有前面两个字符任意,后面以heima结尾
keys user:? 查询所有以user:开头,最后一个字符任意
keys u[st]er:1 查询所有以u开头,以er:1结尾,中间包含一个字母,s或t
为key改名
rename key newkey
renamenx key newkey 如果newkey不存在,成功
对所有key排序
sort key [desc] (help sort) 只能对集合排序
redis为每个服务提供有16个数据库,编号从0到15
切换数据库
select index
数据移动
move key db (必须保障本数据库有对应key,和对应数据库没有对应key)
数据清除
dbsize 库里面有多少key
flushdb 干掉对应数据库中所有key
flushall 干掉所有数据库中所有key
http://xetorthio.github.io/jedis/
java-1.8.0-openjdk-devel-1.8.0
wget http://download.redis.io/releases/redis-4.0.0.tar.gz
tar –xvf 文件名.tar.gz
redis-server -p 6380 换端口启动redis
redis-cli -p 6380
cat redis.conf | grep -v “#” | grep -v “^$” > redis-6379.conf
修改内容如下:
port 6379 daemonize yes logfile “6379.log” dir /redis-4.0.0/data protected-mode no
查看redis进程,并杀死
ps -ef|grep redis
kill -9 pid
设置本地数据库文件名,默认值为 dump.rdb。通常设置为dump-端口号.rdb。
dbfilename dump.rdb
设置存储.rdb文件的路径。通常设置成存储空间较大的目录中,目录名称data。
dir
设置存储至本地数据库时是否压缩数据,默认为 yes,采用 LZF 压缩。通常默认为开启状态,如果设置为no,可以节省 CPU 运行时间,但会使存储的文件变大(巨大)
rdbcompression yes
设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行。通常默认为开启状态,如果设置为no,可以节约读写性过程约10%时间消耗,但是存储一定的数据损坏风险
rdbchecksum yes
后台存储过程中如果出现错误现象,是否停止保存操作。通常默认为开启状态
stop-writes-on-bgsave-error yes
满足限定时间范围内key的变化数量达到指定数量即进行持久化。second:监控时间范围在 conf文件中进行配置
save 12 2 (15分钟内,有1个key值变化,执行一次bgsave)
以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中命令 达到恢复数据的目的。与RDB相比可以简单描述为改记录数据为记录数据产生的过程。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式
always(每次)
每次写入操作均同步到AOF文件中,数据零误差,性能较低,不建议使用。
everysec(每秒)
每秒将缓冲区中的指令同步到AOF文件中,数据准确性较高,性能较高,建议使用,也是默认配置 在系统突然宕机的情况下丢失1秒内的数据
no(系统控制)
由操作系统控制每次同步到AOF文件的周期,整体过程不可控
是否开启AOF持久化功能,默认为不开启状态
appendonly yes|no
AOF写数据策略
appendfsync always|everysec|no
AOF持久化文件名,默认文件名未appendonly.aof,建议配置为appendonly-端口号.aof
appendfilename filename
AOF持久化文件保存路径,与RDB持久化文件保持一致即可
dir
自动重写
auto-aof-rewrite-min-size size
auto-aof-rewrite-percentage percentage
bgrewriteaof 手动重写
自动重写见AOF配置
开启事务
multi 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中
执行事务。设定事务的结束位置,同时执行事务。与multi成对出现,成对使用
exec
取消事务。终止当前事务的定义,发生在multi之后,exec之前
discard
对 key 添加监视锁,在执行exec前如果key发生了变化,终止事务执行。必须在事务之前定义
watch key1 [key2……]
取消对所有 key 的监视
unwatch
使用 setnx 设置一个公共锁。对于返回设置失败的,不具有控制权,排队或等待。 对于返回设置成功的,拥有控制权,进行下一步的具体业务操作。value可以为任意值1
setnx lock-key value
del lock-key
使用 expire 为锁key添加时间限定,到时不释放,放弃锁。由于操作通常都是微秒或毫秒级,因此该锁定时间不宜设置过大。
expire lock-key second
pexpire lock-key milliseconds
影响数据逐出的相关配置
最大可使用内存 。占用物理内存的比例,默认值为0,表示不限制。生产环境中根据需求设定,通常设置在50%以上。
maxmemory
每次选取待删除数据的个数
maxmemory-sample
删除策略。达到最大内存后的,对被挑选出来的数据进行删除的策略
maxmemory-policy no-enviction (禁止驱逐数据(redis4.0中默认策略),会引发错误OOM(Out Of Memory))
检测易失数据(可能会过期的数据集server.db[i].expires ) volatile-lru:挑选最近最久未使用的淘汰volatile-lfu:挑选最近使用次数最少的数据淘汰volatile-ttl:挑选将要过期的数据淘汰volatile-random:任意选择数据淘汰 检测全库数据(所有数据集server.db[i].dict ) allkeys-lru:挑选最近最少使用的数据淘汰allkeys-lfu:挑选最近使用次数最少的数据淘汰allkeys-random:任意选择数据淘汰redis-server /redis-4.0.0/redis-6380.config --slaveof 127.0.0.1 6379
配置文件 slaveof 127.0.0.1 6379
断开连接 slaveof no one
为避免slave进行全量复制、部分复制时服务器响应阻塞或数据不同步,建议关闭此期间的对外服务
slave-serve-stale-data yes|no
复制缓冲区大小设定不合理,会导致数据溢出。如进行全量复制周期太长,进行部分复制时发现数据已 经存在丢失的情况,必须进行第二次全量复制,致使slave陷入死循环状态。
repl-backlog-size 1mb (在主服务器上配置)
cluster-enabled yes|no
cluster-config-file cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-node-timeout 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
sed “s/6379/6380/g” redis-6379.conf > redis-6380.conf
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384