• redis笔记1(千峰)


    一. redis

    1.  含义:

           remote dictionary server 远程字典服务, c语言编写的;

    2 特点

          (1)是nosql(not only sql) 类型的数据库, key: value键值对

          (2)基于内存存储数据, 提供了多种持久化机制.  性能快:11万次读/s, 8万次写/s

          (3)提供主从, 哨兵, 集群的搭建方式.防止宕机.

    3 安装

        3.1 docker-compose.yml文件

    version: '3.1'
    services: 
      redis:
        image: daocloud.io/library/redis:5.0.7
        container_name: redis
        restart: always
        environment:
          - TZ=Asia/Shanghai
        ports: 
          - 6379:6379

        3.2 安装

             进入opt目录, 创建docker_redis目录, 进入该目录并创建docker-compose.yml文件.

            

           

             

       3.3 进入容器

            docker-exec -it  容器id bash: 该命令必须在容器中

             redis-cli: 该命令是redis提供的,只有使用了该命令才能操作redis数据库

              

     4. redis常用命令(参考文档http://redisdoc.com/)

         4.1 redis数据结构

              * key-string:         

              * key-hash  : hash是map, 存储kv结构的对象(对象操作)

                      

              * key-list: 有序可重复的列表  (栈和队列)

                 

             *  key-set: 无序不可重复的集合(交集差集并集)

           

              * key-zset: 有序(根据分数排序)的 不可重复 的set. 每一个value都有一个分数, 适合积分 排名等情况

                 

           4.2 数据结构的操作

               4.2.1 key-string结构的操作:

                       (1) 添加: set key value

                       (2) 取值: get key

                       (3) 批量添加 :  mset key value [key value key value....]

                             批量获取 :  mget  key [key1 key2...]   

                       (4) 自增命令(自增1, 比如点赞)     incr key

                            自减 (自减1 )    decr  key

                        (5) 自增自减指定数量  incrby/decr key increment/decrement

                        (6)  设置生存时间 (按秒)

                               setex  key  second  value

                        (7) 设置值, 如果值不存在(nx: not exist), 则添加, 如果存在, 则什么都不做

                              setnx key value

                        (8) 在value基础上追加 append key value

                  

                  

             4.2.2 hash操作

                 

                         (1) 存储hash数据

                                  hset key field value

                         (2) 获取hash数据

                                  hget key field 

                         (3) 批量存储操作

                             hmset key field value [field value field value...]

                         (4) 批量取得操作

                             hmget key field  [field field..]

                          (5) 自增

                                hincrby  key  field  increament 

                          (6) 不存在则添加

                                 hsetnx key field value

                          (7) 删除field

                                 hdel key field [field ...]

                          (8) 获取全部key和value

                               hgetall key

                               获取所有field

                              hkeys key

                              获取所有value          

                              hvals key

                              获取field的数量

                              hlen key

                            

              4.2.3 list操作

                 

                     数据是有序的, 可以从左侧插入, 也可以从右侧插入, 也可以插入到某个位置

                 * 插入:    

                    (1)  左侧插入 :  lpush key value [value ...]

                    (2)  右侧插入 :  rpush key value [value ...]

                    (3)  替换插入 :  lset key index value  

                    (4)  插入 : 如果key不存在 则什么都不做  lpushx /  rpushx key  value  

               * 获取

                   (1) 左侧弹出 lpop key

                    (2) 右侧弹出 rpop key

                    (3) 弹出多个 (start从0开始, stop 的 -1 表示最后一个,  -2表示倒数第二个)

                           lrange key  start  stop 

                    (4) 获取指索引定位置的value(index从0开始)

                           lindex key index

                    (5) 获取list的长度

                         llen key

                 *删除

                      (1)删除count个value,(count > 0, 表示从左往右删除, count < 0, 表示从右往左删除, count == 0 表示全部删除)

                         lrem key count value 

                      (2) 保留列表中的数据 (注意: 保留的数据包括stop位)

                          ltrim key start stop

                       (3) 将A列表的末位弹出并添加到B列表的首位

                           rpoplpush key1 key2

             4.2.4 set操作          

                   (1)存数据:

                        sadd key member [member...]

                   (2)查看数据:

                        smembers key  :查看所有

                         sismember key member: 

                    (3) 删除数据

                          spop key [count]

                          srem key member [member1...]

                    (4) 交集

                           sinter key1 key2 [key3...]

                    (5) 并集

                           sunion key1 key2 [key3...]

                    (6)差集

                           sdiff key1 key2...

                       

             4.2.5 zset: 每个值都有分数, 有序

                         

                  增: (score必须是数, member 不允许重复)

                       zadd key socre member [score member ...]

                  修改score (如果member不存在, 就相当于add命令)

                        zincrby key increment member

                  查:  

                       zrange key start stop [withscores]: 从小到大查看; sart从1开始, stop -1表示最后一位;

                       zrevrange  key  start stop  [withscore]: 从大到小查看

                       zrangebyscore key min max [withscore] [limit offset count ]: 根据分数区间返回members(包含max的member, 如果不包含在min/max的左                                边加"("来表示  ), limit 表示偏移量, offset表示 数量, min的最小值是-inf, max的最大值是+inf; 

                              

                        zscore key member: 查看某个member的score

                        zcount key min max : 查看范围内的member的数量.

                 删除: 

                       zrem key member

                排序: strt 从0开始, stop -1表示倒数第一个, 查询结果包含stop

                        zrange key start stop [withscore]

                 反转: zrevrang  key  start stop  [withscore]

           4.3 key常用命令

             

                           keys parttern:  查看所有key;    其中parttern可以是 * ,  xx* 或者 *xx  

                           exists key [key...]: 查看key是否存在,返回1或0, 有一个存在就返回1.

                           del key [key...]: 删除

                      设置key的生存时间(能生存多长时间):

                            expire key second: 单位是秒

                            pexpire key millionsecond: 单位是毫秒

                      设置key的生存时间点(能生存到那个时间戳)

                            expireat key timestamp:单位是秒

                            pexpireat key timestamp:单位是毫秒

                      查看剩余生存时间: 返回值特殊情况: -2表示当前key不存在, -1表示key没有设置生存时间

                            ttl key 

                            pttl key

                      移出key的生存时间: 返回值 1: 移出成功, 0 : key本来就没有设置生存时间,

                          persist key

                      选择操作的库: 0-15号库,  默认0 号库

                         select 0~15

                      移动key到另外一个库中

                         move key db

                   

           4.4 库的常用命令

                   清空当前数据库: flushdb      

                   清除全部数据库: flushall

                   查看keys的数量: dbsize

                   查看最近一次redis保存数据到磁盘的时间戳: lastsave

                   实时监控: monitor, 

             

  • 相关阅读:
    HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋)
    HUD 2203 亲和串
    POJ 3461 Oulipo(乌力波)
    FJNU 1154 Fat Brother And His Love(胖哥与女神)
    Polygon Triangles
    Double it(水题模拟+逆向思维)
    Sphenic numbers(素数筛)
    Desktop(模拟)2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest
    Weather Station(基础DP)2016-2017 ACM Central Region of Russia Quarterfinal Programming Contest
    找零钱(经典DP)
  • 原文地址:https://www.cnblogs.com/dangdanghepingping/p/14278577.html
Copyright © 2020-2023  润新知