Redis常用命令

查看当前所有的KEY

KEYS *

KEYS zhang*    #查看前缀为zhang的所有键;  


查看当前redis的配置信息

CONFIG GET *


强制停止redis快照导致redis用户没有权限写rdb文件或磁盘空间满了,解决方法

config set stop-writes-on-bgsave-error no


清除redis缓存

redis-cli

dbsize

flushall

exit


删除redis当前数据库中的所有KEY

flushdb


删除redis所有数据库中的KEY

flushall


redis.conf 配置参数详解

daemonize  yes    #运行可以守护进程启动,放置于后台;

bind:x.x.x.x    #监听地址,建议只对本地127.0.0.1开放;

protect-mode yes    #redis的保护模式;

requirepass 密码    #设置密码;

timeout 0    #关闭超时;

tcp-keepalive 0    #在Linux上,指定值(秒)用于发送ACKs的时间,关闭连接需要双倍的时间,默认为0;

loglevle notice    #指定日志记录的级别。有四个级别:debug(记录很多信息,用于开发测试)、notice(常用与生产环境)、warning(只有非常重要或严重的信息才会记录到日志)、verbose(有用的信息,比debug少);

logfile  /var/log/redis/redis.log    #默认为stdout;

databases n    #可用数据库,范围在0 - (database-1);

save    #保存数据到磁盘(.rdb);

stop-writes-on-bgsave-error yes    #后台储存错误停止写;

rdbcompression yes    #储存到本地数据库时(持久化到rdb文件)是否压缩;

dbfilename dump.rdb    #本地持久化数据库文件名,默认dump.rdb;

dir /var/db/redis/    #数据库文件路径,是目录;

#主从复制,设置该数据库主从;

salveof    #设置本机为从库,设置好master的ip及端口,它会自动从master进行数据同步;

masterauth    #设置主库认证的密码;

slave-read-only yes    #设置slave是否接受写;

slave-serve-stale-data yes    #从库同主库失去连接或复制正在进行时,从库是继续响应客户端请求还是否;

repl-disable-tcp-nodelay no    #发送到slave的延迟会降低,但将更过的带宽用于复制;

slave-priority 100    #master不能工作后,从众多slave中选出优先值最小的slave提升为master,优先值为0表示不能为master;

appendonly no    #是否开启AOF数据备份,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件,当此文件很大;

appendsync everysec    #AOF文件同步策略,后台会进行大量I/O;

no-appendfsync-on-rewrite no    #环境AOF大量I/O;

auto-aof-rewrite-percentage 100    #aof自动重写;

auto-aof-rewrite-min-size 64mb    #指定最小大小用于aof重写;

slowlog-log-slower-than 1000    #慢日志,记录超过特定执行时间的命令,不包括I/o;

slowlog-max-len 128    #slow log的长度,超过大小,最先进入队列的记录会被踢出;

hash-max-zipmap-entries 512    #hash将以一种特殊的编码方式(大大减少内存使用)来储存,这是其中一个临界值;

hash-max-zipmap-value 64    #另外一个临界值;

list-max-ziplist-entries 512    #多个list以特定的方式编码来节省空间;

list-max-ziplist-value 64

set-max-intset-entries 512

zset-max-ziplist-entries 128

zset-max-ziplist-value 64

activerehashing yes    #Redis将在每100ms时使用1ms的CPU时间来对redis的hash表进行重新hash,可降低内存的使用;

client-output-buffer-limit normal 0 0 0     #限制输出缓存;

client-output-buffer-limit slave 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60

hz 10    #不是所有任务都以相同的频率执行,但redis按照指定的“hz”值执行检查任务;

aof-rewrite-incremental-fsync yes    #当一个子节点重写AOF文件时,则文件每生产32m数据进行同步;


Redis官方文档对VM的使用建议:

当你的KEY很小二value很大时,使用VM的效果会比较好,因为这样节约内存比较大;

当key不小时,可以考虑使用一些非常方法将很大的key变成value,比如将key,value组合成一个新的value。


连接操作相关命令

quit:关闭连接;

auth:简单密码认证;

help cmd:查看命令帮助;


持久化

save:将数据同步保存到磁盘;

bgsave:将数据异步保存到磁盘;

lastsave:返回上次成功将数据保存到磁盘的Unix时戳;


远程服务控制

info:提供服务器的信息统计;

monitor:实时转储收到的请求;

slaveof:改变复制策略设置;

shundown:将数据同步保存到磁盘,然后关闭服务;


value操作命令

exists(key):判断一个key是否存在;

del(key):删除一个key;

type(key):返回值的类型;

keys(pattern):返回满足给定模式的所有key;

randomkey:随机返回key空间的一个;

keyrename(oldname,newname):重命名key;

dbsize:返回当前数据库中key的数目;

expire:设定一个key的活动时间(s);

ttl:获得一个key的活动时间;

select(index):按索引查询;

move(key,dbindex):移动当前数据库中的key到dbindex数据库;

flushdb:删除当前选择的数据库中的所有key;

flushall:删除所有数据库中的所有key;


string操作命令

set(key,value):给数据库中名称为key的string赋值value;

get(key):返回数据库中名为key的string的value;

getset(key,value):给名称为key的string赋予上一次的value;

mget(key1,key2,...,key N):返回库中多个string的value;

setnx(key,value):添加string,名称为key,值为value;

setex(key,time,value):向库中添加string,设定过期时间time;

mset(key 1,value 1,...,key N,value N):批量设置多个string的值;

msetnx(key 1,value 1,...,key N,value N):如果所有名称为 key N的string都不存在,则向库中添加string,名称为 key N赋值value N;

incr(key):名称为key的string加 1 操作;

incrby(key,integer):名称为key的string增减integer;

decr(key):名称为key的string减1操作;

decrby(key,integer):名称为key的string的值附加value;

append(key,value):名称为key的值附加value;

substr(key,start,end):返回名称为key的string的value的子串;


list操作的命令

rpush(key,value):在名称为key的list尾部添加一个值为value的元素;

lpush(key,value):在名称为key的list首部添加一个值为value的元素;

llen(key)返回名称为key的list的长度;

lrange(key,start,end):返回名称为key的list中start至end之间的元素(下表从0开始);

ltrim(key,start,end):截取名称为key的list,保留start至end之间的元素;

lindex(key,index):返回名称为key的list中index位置的元素;

lset(key,index,value):给名称为key的list中index位置的元素赋值value;

lrem(key,count,value):删除count个名称为key的list中值为value的元素;

brpop(key1,key2,...,key N):rpop的block版本;

rpoplpush(srckey,dstkey):返回并删除名为srckey的list尾元素,并将该元素添加到名为dstkey的list的头部;


set操作的命令

sadd(key,member):向名为key的set中添加元素member;

srem(key,member):删除名为key的set中元素的member;

spop(key):随机返回并删除名为key的set中的一个元素;

smove(srckey,dstkey,member):将member元素从名为srckey的集合移动到名为dstkey的集合;

scard(key):返回名为key的set的基数;

sismember(key,member):测试member是否是名称为key的set的集合;

sinter(key1,key2,...,key N):求交集;

sinterstore(dstkey,key1,...,key N):求交集并将交集保存到dstkey的集合;

sunion(key1,...,key N):求并集;

sunionstore(dstkey,key 1,...,key N):求并集并将并集保存到dstkey的集合;

sdiff(key1,...,key N):求差集;

sdiffstore(dstkey,key 1,...,key N):求差集并将差集保存到dstkey的集合;

smembers(key):返回名为key的set的所有元素;

srandmember(key):随机返回名为key的set的一个元素;


zset(sorted set)操作的命令

zadd(key,score,member):向名为key的zset中添加元素member,score用于排序,如果该元素已经存在,则根据score更新该元素的顺序;

zrem(key,member):删除名为key的zset中的元素member;

zincrby(key,increment,member):如果在名为key的zset中已经存在元素member,则该元素的score增加increment,否则向集合中添加该元素,其score的值为increment;

zrank(key,member):返回名为key的zset,顺序;

zrevrank(key,member):返回名为key的zset,倒序;

zrange(key,start,end):返回名为key的zset,score顺序按index从start到end返回所有元素;

zrevrange(key,start,end):返回名为key的zset,score倒序按index从start到end返回所有元素;

zrangebyscore(key,min,max):返回名为key的zset中score大于等于min,小于等于max的所有元素;


hash操作命令

hset(key,field,value):向名为key的hash中添加元素filed----value;

hget(key,field):返回名为key的hash中field对应的value;

hmset(key,field1,value1,...,field N,value N):向名为key的hash中添加元素field----value;

hmget(key,field1,...,field N):返回名为key的hash中filed对应的value;

hincrby(key,field,integer):将名为key的hash中field的value增加integer;

hexists(key,field):名为key的hash中是否存在键为field的域;

hdel(key,field):删除名为key的hash中键为field的域;

hlen(key):返回名为key的hash中元素个数;

hkeys(key):返回名为key的hash中所有键;

hvals(key):返回名为key的hash中所有键对应的value;

hgetall(key):返回名为key的hash中所有的键(field)及其对应的value;



Redis高级应用


安全性

设置客户端连接后进行操作需要密码;

requirepass password;

redis-cli -a password 或者 进入后 auth password


主从复制

通过主从复制可以允许多个 slave 拥有和 master 相同的数据库副本;注意一下防火墙问题;

slaveof  IP  port;

masterauth password;


事务处理

redis对事务的支持还比较简单;

redis只能保证一个client发起的事务中的命令可以连续执行,而中间不会插入其他的client的命令;

当一个client在一个连接中发出multi命令时,这个连接会进入一个事务的上下文,连接后续命令不会不及执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令;


持久化机制

redis持久化就是把数据从内存保存到硬盘;

redis是一个支持持久化的内存数据库;

snapshotting快照,默认的储存方式写入dump.rdb的二进制文件中,可以配置redis在 n秒内如果超过 m个key被修改就自动做快照;

appendonly file,aof方式redis会将每一次的函数都追加到文件中,当redis重启时会重新执行文件中保存的命令;



虚拟内存的使用

配置 VM 功能,保存路径,最大内存上线,页面多少,页面大小,最大工作线程;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342