Redis基础讲解2(常用命令的使用)

1. redis的五大数据类型

  • String(字符串): String 是redis最基本的数据类型,一个key对应一个value;String是二进制安全的;’redis的String可以包含任何的数据(jpg图像和序列化的对象等都可以包含);注意:一个redis中的字符串value最多可以存512M
  • Hash(哈希,类似Map): redis hash是一个键值对集合;是一个String类型的field和value的映射表 ,hash适合用于存储对象;类似Java里面的Map<String,Object>
  • List(列表): redis列表是简单的字符串列表,按照插入的顺序排序,可以添加一个元素到列表的头或者尾(注意:列表的底层是链表
  • Set(集合): Set是String类型的无序无重复的集合。他是通过HashTable实现的。
  • Zset(sorted set: 有序集合): 和Set一样无重复集合,不同的是每个元素都会关联一个double类型的分数score;redis正式通过分数为集合中的成员进行从小到大的排序。Zset的成员是唯一的,但score却是可以重复的。

2. redis键(key)

  • keys *: 列出所有的key
  • exists key : 判断某个key是否存在
  • move key db:将某个key移动到某个库去,例如move hello 7 将key为hello的这个key 移动到第8号库。
  • expire key 秒钟 :为给定的key设置过期时间
  • ttl key:查看还有多少秒过期(-1表示永不过期,-2表示已过期)
  • type key:查看key是什么类型
  • del key:删除key

3. redis字符串(String:单值单value)

  • set key value:设置key;
    get key :获取key;
    del key: 删除key;
    append key value: 追加;
    strlen key: 获取key的长度
  • incr key:值为数字的value+1;
    decr key:值为数字的value-1;
    incrby key 增长值:值为数字的value+增长值;
    decrby key 增长值:值为数字的value-增长值;
    注意:如果value不是数字,那么执行这四个命令将报错
  • getrange:获取指定区间的字符串;如getrange key 0 -1: 表示获取key对应的value与get key一样,getrange key 0 3则是获取这个key对应的value的0-3个字符,包括第三个,也就是说输出的是4个字符;
    setrange: 用来替换字符;如setrange key 0 111: 表示从0个位置开始替换value的值,替换前三个为111。如果此key的value是qwert,那么执行了setrange key 0 111命令以后value就变成了 111rt。
  • setex key 秒 value : 设置key的同时为其设置过期时间;如setex abc 10 sssss设置key为abc,value为sssss的数据过期时间为10秒钟
    setnx key value: 如果key不存在则插入key和value,如果key存在则不进行插入,防止覆盖
  • mset key1 value1 key2 value2 key3 value3 ...批量设置key和value的值
    mget key1 key2 key3...批量获取key的值
    msetnx key1 value1 key2 value2 key3 value3 ...如果有一个key已经存在,那么这个命令将不会把数据插进去,如果key都不存在才会把所有的都插进去。

4. redis列表(List :单值多value)

  • lpush key value1 value2 value3 ... valuen 从左边添加(先进后出)
    rpush key value1 value2 value3 ... valuen 从右边添加(先进先出)
    lrange key 0 -1 将key所有的value都列出,如果是lpush的,列出的顺序应该是valuen ... value3 value2 value1;如果是rpush 的,列出的顺序将是:value1 value2 value3 ... valuen

  • lpop key :取栈顶的元素出栈
    rpop key:取栈底的元素出栈

  • lindex key 下标:按照索引的下标获取元素,从上往下获取的

  • llen key:获取这个key的value的长度

  • lrem key n个 value:删除list中的n个value;如lrem list1 3 ttt就是将list1中value为ttt的删除掉3个。如下图:

    lrem.png

  • ltrime key 起始值 终止值 :将key中的value从起始值开始,到终止值结束截取出来重新赋值给key;如下图:

    ltrime.png

  • rpoplpush 源list 目的list 将源list的栈底元素移动到目的list的栈顶中去,如下图:

    rpoplpush .png

  • lset key index value 给index位置的值重新赋值为value

  • linsert key before/after value 值 :在value前面或者后面插入一个值

5. redis集合(Set:单值多value)

  • sadd key value1 value2 value3 ... valuen 新增set集合(重复的数据会过滤掉)
    smembers key 查看所有的value
    sismember key value: 在key这个集合中是否存在value这个值
  • scard key: 获取集合里面的元素个数
  • srem key value : 删除集合中的某个value
  • srandmember key :整数n:在key这个集合中随机的出n个value(用来抽奖)
  • spop key :随机出栈
  • smove key1 key2 key1里面的某个值:将key1里面的某个值移到key2中去
  • sdiff key1 key2 : 获取key1和key2 的差集(在key1中并且不在key2中的值)
  • sinter key1 key2: 获取key1和key2的交集(在key1中并且又在key2中的值)
  • sunion key1 key2: 获取key1和key2的并集(在key1中或者在key2中的值)

6. redis哈希(hash:KV模式不变,但是V是一个键值对《重要》)

  • hset key field value;:新增key下面的field下的value值
    hget key field:获取key下面的field的值
    hmset key field value [file value ....]:批量新增key下面的field的值
    hmget key field [field ...] : 批量获取多个key
    hgetall key:获取key下面的所有值
    hdel key field [field ...]:删除key下面的field,可以删除多个;如下图:
    set1.png
  • hlen key 获取这个这个key有多少个属性
  • hexists key field: 判断这个field是否在这个key里面
  • hkeys key:列出key下的所有field
  • hvals key:列出key下所有的value
  • hincrby key field 整数n :给field的value增加n(只能给整数递增)
  • hincrbyfloat key field 小数n:给field的value增加小数n(只能给小数增加)
  • hsetnx key field value : 给key增加一个不存在的field,如果存在此field,将不能新增,可以防止覆盖

7. redis有序集合Zset(sorted set:在set的基础上加了一个score值)

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

推荐阅读更多精彩内容