zoukankan      html  css  js  c++  java
  • reids 基本操作

    redis 基本操作

    1. 什么是Redis

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,
    Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
    Redis特点:
    Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
    Redis应用场景:
    因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。
    将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

    进入redis

    redis-cli --raw

    redis五种数据类型、及操作 (针对key) ,value都是字符串

    • string 字符串

    • list 列表

    • hash 哈希

    • set 集合

    • sorted sets 有序集合

    string


    #设置
    set key value       例子:set test "Just do a test!"
    # 获取
    get key             例子:get test
    # key是唯一的,不能用同一个key 不然就会覆盖

    查看过期时间


    # -1 表示永久     -2 表示 不存在
    ttl key             例子:ttl test

    设置过期时间


    # 给已经存在 key,设置过期时间
    expire key seconds   例子:expire test 12

    # 设置 key的同时,设置过期时间
    set key value ex seconds 例子:set test1 "ABC" ex 8

    追加


    # 给已有的value,再添加新的值
    append key value           例子:append test1 "123"

     

    设置 / 获取 多个


    #设置多个 string
    mset key value key value..     例子:mset a1 "AAA111" b2 "BBBA222"

    #获取多个 string
    mget key key key ...       例子:mget a1 b2

    key 操作 (针对所有的 key)


    # 查看所有的key
    keys *           例子: keys *

    # 删除
    del key   例子:del b1

    # 查看key是否存在 ,存在返回 1, 不存在返回 0
    exists key     例子: exists b1

    # 查看key类型
    type key           例子:type a1
    运算

    set num 1    # 自动识别,字符串里面的 整数 例子:
    # +1
    incr key       例 (incr num)   例子:set c3 12345
                                      incr c3
    # -1
    decr key       例 (decr num)   例子:decr c3

    # +整数
    incrby key increment             例 (incrby num 50) 例子:incrby c3 6

    # -整数
    decrby key increment             例 (decrby num 50)   例子:decrby c3 6

    list

    • 设置


      # lpush 左添加 (栈), 后面来的 放第一个
      lpush key value     例子: lpush l1 "abc"

      #rpush 右添加   (队列) 后面来的 放最后一个
      rpush key value     例子: rpush l1 "123"
    • 查看


      # lrange key start stop 例子: lrange l1 0 -1
      例 查看所有
      lrange key 0 -1
    • 获得list的元素个数


      # llen key         例子:llen l1
    • 查看位于lidex 位置上的元素


      # lindex key index   例子:lindex l1 0
    • 删除

      • lpop 删除左边第一个 (第一个)


        #rpush test2 d a b c u w y a b c y a b t c w t
        lpop key       例子:lpop test2
    • rpop 删除右边第一个 (最后个)


      rpop key       例子:rpop test2
    • lrem 删除指定value 及 数量


      rpush test_list a b c w a b c a b c w
      # lrem key count value   例子:

      #count > 0 从左往右 删除数量为count的value   (从上往下)
      例 : lrem test_list 2 a   例子:lrem test 1 c

      #count = 0 删除所有的 value
      例 : lrem test_list 0 a   例子:lrem test2 0 c

      #count < 0 从右往左 删除数量为count的value   (从下往上)
      例 : lrem test_list -1 b   例子:lrange test2 -1 a

    hash (类似与字典)

    • 设置


      # hset key field value   例子:hset user name xlong
      例 user = { name:jianeng}
      hset user name jianeng
    • 获取


      # hget key field     例子:hget user name
    • 删除


      # hdel key field     例子:hdel user name
    • 设置多个


      #hmset key field value [field value]   例子:hmset user1 name xlong age 26 sex nan
      例 user{name:jianeng , age:18, sex:male }
      hmset user name jianeng age 18 sex male
    • 获取多个


      # hmget key field field   例子:hget user1 name age sex

    • 获取全部field value (类似与字典里的 items)


      # hgetall key     例子:hgetall user1

      hgetall user

    • 获取所有的field (类似与字典里的 keys)


      # hkeys key   例子:hkeys user1

    • 获取所有的value (类似与字典里的 values)


      # hvals key   例子:hvals user1

    • 获取field的个数


      # hlen key     例子:hlen user1

    set(集合)

    • 设置


      # sadd key value [value]   (唯一,无序)   例子:sadd tests1 q w e 1 2 3
                                                      sadd tests2 w w w w 6 6 6 6(最终只有w 和6)
    • 获取


      # smembers key   例子:smembers tests1
    • 删除

      • srem指定删除


        # srem key member       例子:srem tests1 2
      • spop随机删除


        # spop key           例子:spop tests1
    • 移动一个集合的值到另一个集合


      # smove oldkey newkey member   例子:smove tests1 tests2 3
    • 判断集合存在某个值


      # sismember key value             例子:sismember tests2 w
    • 交集


      # sinter key1 key2 ..           例子:sinter tests1 tests2

      把 key1 key2的交集合并到newkey


      # sinterstore newkey key1 key2         例子:sinterstore tests3 tests1 tests2
    • 并集


      # sunion key1 key2 ...         例子:sunion tests1 tests2

      把 key1 key2的并集合并到newkey


      # sunionstore newkey key1 key2         例子:sunionstore tests4 tests1 tests2
    • 差集


      # sdiff key1 key2         例子:sdiff tests1 tests2

      把 key1 key2的差集合并到newkey


      # sdiffstore newkey key1 key2       例子:sdiffstore tests5 tests1 tests2
    • 获取集合个数


      # scard key     例子:scard tests5
    • 随机返回一个


      # srandmember key       例子:srandmember tests4

    zset(有序集合)

    • 设置


      # zadd key score member         例子: zadd testz1 1 a1a2a3
        zadd testz2 2 b1b2b3
        zadd testz3 3 c1c2c3

      zadd my_zset 1 'one'
      zadd my_zset 2 'two'
      zadd my_zset 3 'three'
      zadd my_zset 4 'four'
      zadd my_zset 5 'five'
    • 获取

      • zrange正序


        #zrange key start stop   (withscores)     例子:zrange testz1 0 -1
        zrange my_zset 0 -1  
      • zrevrange倒序


        #zrevrange key start stop         例子:zrevrange testz2 0 -1
        zrevrange my_zset 0 -1
    • 删除


      #zrem key member           例子:zrem testz1 a1a2a3
      zrem my_zset two
    • 索引

      • zrank正序


        # zrank key member           例子:zrank testz2 b1b2b3

        zrank my_zset three
      • zrevrank反序


        # zrevrank key member         例子:zrevrank testz2 b1b2b3

        zrevrank my_zset three
    • zscore : 查看score值


      # zscore key member         例子:zscore testz2 b1b2b3

      zscore my_zset2 a

    • zincrby : 修改score值


      # zincrby key score member         例子:zincrby testz2 2 b1b2b3
    • zcard 查看有序集合元素数


      # zcard key             例子:zcard testz2

      zcard my_zset

    • zrangebyscore 返回集合中 score 在给定区间的元素


      #返回了 score 在 2~3 区间的元素         例子:zrangebyscore testz2 21 23
      zrangebyscore my_zset 2 3 withscores
    • zcount 返回集合中 score 在给定区间的数量


      # zcount key min max             例子:zcount testz2 21 23

      zcount my_zset 2 3
    • zremrangebyrank : 删除集合中排名在给定区间的元素


      # zrange my_zset 0 -1 withscores       例子:zremrangebyrank testz2 21 23
      zremrangebyrank my_zset 1 3
    • zremrangebyscore : 删除集合中 score 在给定区间的元素


      # zrange my_zset 0 -1 withscores           例子:zremrangebyscore testz1 0 2
      zremrangebyscore my_zset 1 2

     

    Redis发布和订阅

    #发布 
    publish 频道 消息           例子:publish qq1 "qq.com"
    
    
    # 订阅
    subscribe 频道             例子:subscribe qq1 "hello"
    

  • 相关阅读:
    【转】编译原理4种文法类型
    Gamma校正与线性空间
    【翻译】CEDEC2014 CAPCOM 照相机正确的照片真实的制作工作流
    【翻译】CEDEC2013 BANDAI NAMCO 了解游戏格斗动画中的身体运动结构和原理
    UnrealEngine4 PBR Shading Model 概述
    【翻译】Kinect v2程序设计(C++-) AudioBeam篇
    【翻译】Kinect Studio是? 三月 SDK Update的新机能
    【翻译】Kinect v2程序设计(C++) Body 篇
    【翻译】Kinect v2程序设计(C++) BodyIndex篇
    【翻译】Kinect v2程序设计(C++) Depth编
  • 原文地址:https://www.cnblogs.com/longxd/p/8884193.html
Copyright © 2011-2022 走看看