redis方法详解

字符串

set email wy04131@126.com

get email

setnx email wy04131@126.com 如果存在这个key,则更新失败返回整型0

setex email 10 wy04131@126.com 设定key的有效期为10秒

setrange email 7 qq.com 将字符串的第七位开始换成qq.com,7为下标,从0开始,返回新字符串的长度 替换完成后原来字符串剩余的长度内容不变

getrange email 0 5 获取字符串的第0 - 5 位字符

mset key1 value1 key2 value2 批量设置,成功返回ok,失败则全部失败,返回0

mget key1 key2 key3 .......批量获取,不存在的key返回 nil

msetnx 批量复制,返回1全部成功,失败(即全部失败,本次操作不会覆盖原有的值)则返回0

getset emai loujing@qq.com 设置新值,返回旧值

incr key 对key的值自增,并返回,如果key不存在,则设置,并认为原来的value为0

incrby key n 对key的值自增,n为步长,并返回,如果key不存在,则设置,并认为原来的value为0

decr和decrby 同incr类型,其实incr也支持负数来实现decr,反之decr 也可用负数实现incr

append key new_value 给key追加value,相当于拼接字符串,返回新字符串的长度

strlen key 返回字符串的长度

哈希

hset myhash filed value 设置哈希表myhash的字段field的值为value,如果不存在则设置,成功返回1,(应用场景存用户的信息比较方便)

hget myhash field 获取哈希表中的字段field

hmget myhash field1 field2 获取指定所有键

hsetnx 同字符串的,不存在则创建,存在则返回0

hmset myhash field1 value1 field2 value2 批量设置,成功返回ok

hincrby myhash field n 其中n为步长,可以为负数

hexists myhash field 哈希表中是否存在指定filed,返回1或0

hlen myhash 返回哈希表中filed的数量

hdel myhash filed 删除指定field 成功返回1

hkeys myhash 返回哈希表中所有字段

hvals myhash 返回哈希表中所有字段的值

hgetall myhash 获取哈希表中所有的filed 和value

list

lpush list “value” 向列表头部压入字符串,返回的是list里元素的数量,注意这里的字符串值要加引号,不加是否能行待测试

rpush 同上,只不过是从尾部压入

linsert list before “value1” “value2” 在value1前面压入元素value2

lrang list 0 -1 0是头部第一个元素,-1是尾部最后一个元素 全部取出

lset list n “value”  n为下标,替换list中下标为n的元素为value,成功返回ok

lrem list n value 删除列表中n个和value值相等的元素(就是删除列表中n个value),n<0 从尾部删除;n=0 全部删除;返回成功删除的数量; 如 lrem list 1 “wangong” 删除list中1个和 “wangyong”相同的值

ltrim list m n 保留下标m - n的元素,其余的全删除,成功返回ok

lpop list 删除list的头部第一个元素,病返回这个删除的元素

rpop list 同上

rpoplpush list1 list2 从list1尾部弹出元素添加到list2头部,返回弹出这个元素,见图一

lindex list n 返回指定下标为n的元素,取不到返回nil

llen list 返回list中元素的数量

集合

sadd myset value 向集合中添加元素,成功返回1,已经存在返回0

smembers myset 查看集合中的元素

srem myset value 删除指定元素,成功返回1,不存在返回0

spop myset  随机删除一个元素,并返回这个元素

sdiff myset1 myset2 返回两个集合的差集

sdiffstore myset3 myset1 myset2 将myset1 和myset2 的差集结果存储到myset3 中,成功返回1

sinter myset1 myset2 返回所有指定集合的交集

sinterstore myset myset1 myset2 将myset1和myset2的交集存储到myset中,成功返回1

sunion myset1 myset2 返回所有指定集合的并集

sunionstore myset myset1 myset2 将并集结果存储到myset中,返回新集合的元素个数

smove myset1 myset2 value 将集合1中的元素value移动到集合2中,成功返回1

scard myset 返回集合元素的个数

sismember myset value 查看value是否是集合中的元素,返回1或0

srandmember myset 随机返回集合中的一个元素,但不删除

有序集合

zadd myset n value 向有序集合添加元素,n为下标,如果该值存在返回0,添加失败,但是更新其下标,如图2

zrange myset 0 -1 <withscores> 先从小到大排序,再取全部值,withscores 显示下标

zrevrange myset 0 -1 <withscores> 同上,排序是从大到小

zrangbyscore myset m n <withscores> 按下标找m到n元素并返回,即返回给定区间的元素

zcount myset m n 返回指定区间元素的数量

zcard myset 返回集合里的所有元素的数量

zrem myset value 删除指定集合中的元素值,成功返回1

zincrby myset n value 使集合中的值value的下标增加n,如果这个值不存在则创建,返回最后的下标值

zrank myset value 先把集合元素按下标从小到大排序,再返回集合中value值的索引,不是下标

zrevrank myset value 同上,排序时是从大到小

zremrangebyrank myset m n 删除给定索引区间的元素,这里mn是索引,返回删除元素的个数

zremrangebyscore myset m n 删除给定下标区间的元素,这里mn是下标,返回删除元素的个数

键值相关命令

keys pattern 返回所有键×为所有 my× my开通的键

exists key 是否存在键key 返回1或0

del key 删除key 返回1或0

expire key 10 设置key的有效期为10秒,key必修存在,否则报错

persist key 移除指定key的过期时间

ttl(TTL)key 查看key还有多久过期 -1为过期

select 0  选择数据库,默认进入0数据库

move field 1 将field移动到1数据库

config get databases  获取数据库个数

randomkey  随机返回库中的key

rename old_key new_key 重命名key 返回ok代表成功

type key 返回指定key的数据类型 none 表示key不存在

服务器相关命令

ping 链接redis是否正常 返回PONG为正常

echo 输出

select 0  选择数据库,默认进入0数据库 0-15共16个

quit 退出连接 exit/ctrl +c

dbsize 返回当前数据库中所有key的数量

inof 获取服务器信息,版本号等

config get 获取服务器配置信息,× 代表所有 信息

flushdb 删除当前选择库中的所有key

flushall 删除所有库中所有key 完全清空,返回ok为成功

高级应用

安全性

配置文件中设置requirepass 密码,登录客户端使用 auth 密码 即可

或 redis-cli -a 密码  启动时带着参数输入密码

主从复制

master可以拥有多个slave

多个slave可以连接同一个master外,还可以连接其他slave(主机宕掉可自动提升为主机)

主从复制不会阻塞maser,同步数据时可同时处理client的请求,

提高系统的伸缩性

配置方法

slave

slaveof 主机ip 端口

masterauto 主机密码

master

无需配置

事物处理

redis 事物支持比较简单,如果事物中某一条命令出现,不会让整个事物回滚,只会报出这条错误

multi打开事物,陆续再输入其他命令,不会立即执行,会放入一个队列中,直到执行 exec命令时,才按顺序执行

discard回滚 取消当前事物中的所有命令

watch key对某个key监控 如果key被修改过,则提交的事物不成功,返回nil

持久化存储

快照保存(也是默认方式)save 900 1 意为900秒内有一个key被修改过,则发起快照保存; save 300 10意为300秒内有超过10个key被修改过,则发起快照保存

aof方式 因为快照方式是每隔多少秒进行一次快照,redis一旦宕机,会丢失最后一次快照修改。aof会把每一次收到的写命令通过write命令追加到文件中,即使重新启动也会重新执行文件中的写命令在内存中重建数据库。当然,os会会在内核中缓存write所做的修改,所有可以不是立即写到磁盘上,即aof方式也会造成部分数据丢失,我们可通过配置文件,告诉redis我们想要通过fsync函数强制os写入磁盘的时机

aof配置

appendonlyyes 打开此项,及开启aof

appendsync always 收到写命令即写入,最慢,但最安全,数据最全

appendsync everysec 每秒写入一次,性能和持久化做了很好的折中

appendsync no 完全依赖操作系统,性能最好,无法保证数据

总结:快照方式会在磁盘上生成dump文件,保存的是二进制的数据文件;aof也会生成文件,以aof结尾的,但是里面存储的是操作命令,可以使用cat查看。

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

推荐阅读更多精彩内容

  • Redis是啥 Redis是一个开源的key-value存储系统,由于拥有丰富的数据结构,又被其作者戏称为数据结构...
    一凡呀阅读 1,170评论 0 5
  • 本文为笔者对在学习Redis过程中所收集资料的一个总结,目的是为了以后方便回顾相关的知识,大部分为非原创内容。特此...
    EakonZhao阅读 14,404评论 0 9
  • 教你看懂redis配置 – 安全 我们可以要求redis客户端在向redis-server发送请求之前,先进行密码...
    烨枫_邱阅读 307评论 0 1
  • 现在这个时代,生活节奏加快,无形的生活重担提醒着人们要去努力,很多站在金字塔顶端的人还在努力,你有什么理由不去努力...
    Anney_b96f阅读 207评论 0 0
  • MRC下的内存管理 内存中的5大区域 栈区 这个区的内存保存的是局部变量, 当作用域结束后, 系统就会自动回收内存...
    onePic阅读 1,126评论 0 0