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

    redis是以键值对存储的,和python中的字典一样

    {
      key_1: value_1
       key_2: value_2
    }

     然后这个 value部分可以是不同的数据类型

    {
        name: heboan,   #字符串
        age: 18,    #整数,可以使用自增功能
        my_books: ['java', 'python', 'php', 'python'],  #列表
        my_schools: {'qinghua', 'beida', 'fudan'},   #集合,没有重复的元素
        body: {'weight': '60kg', 'height': '170cm'}  #哈希,也是键值对
    }

    Redis的字符串以及过期时间操作

    > set username heboan   # 设置值
    OK
    > get username   #获取值
    "heboan"
    > set sayhi 'hello world'
    OK
    > get sayhi
    "hello world"
    值之间有空格,需要用引号引起来
    > del username
    (integer) 1
    > get username
    (nil)
    127.0.
    删除key
    #方法1
    > set username heboan EX 10  #10秒后过期
    OK
    
    
    #方法2
    > setex username 10 heboan
    OK
    
    #方法3
    > set username heboan
    OK
    > expire username 10
    (integer) 1
    设置过期时间

    查看当前redis的所有key

    > keys *

    redis的列表操作

    > lpush books python php
    (integer) 2
    > lpush books java
    (integer) 3
    > lrange books 0 -1  #查看此列表所有元素
    1) "java"
    2) "php"
    3) "python"
    
    
    #["java", "php", "pyton"]
    从列表左边插入
    > rpush books c++ golang
    (integer) 5
    > lrange books 0 -1
    1) "java"
    2) "php"
    3) "python"
    4) "c++"
    5) "golang"
    
    #["java", "php", "python", "c++", "golang"]
    从列表右边插入
    #移除并返回左边的第一个元素
    > lpop books
    "java"
    
    #移除并返回右边的第一个元素
    > rpop books
    "golang"
    移除列表中的元素
    127.0.0.1:6379> lrange books 0 -1
    1) "php"
    2) "python"
    3) "c++"
    
    > llen books
    (integer) 3
    返回元素的个数
    > lindex books 0
    "php"
    > lindex books 1
    "python"
    > lindex books 2
    "c++"
    > lindex books 3 #超过返回空
    (nil)
    指定返回第几个元素
    > lrange books 0 -1
    1) "php"
    2) "php"
    3) "golang"
    4) "python"
    5) "c++"
    6) "python"
    7) "php"
    8) "java"
    
    
    #count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
    #删除2个php
    > lrem books 2 php
    (integer) 2
    > lrange books 0 -1
    1) "golang"
    2) "python"
    3) "c++"
    4) "python"
    5) "php"
    6) "java"
    
    #count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值
    #删除1个python
    > lrem books -1 python
    (integer) 1
    > lrange books 0 -1
    1) "golang"
    2) "python"
    3) "c++"
    4) "php"
    5) "java"
    
    #count = 0:移除表中所有与value 相等的值
    删除指定的元素

    redis的集合操作

    集合和列表相比:1、集合不拥有重复的元素     2、集合是无序的,没有位置关系

    > sadd school_1 qinghua beida
    (integer) 2
    添加元素
    > smembers school_1
    1) "beida"
    2) "qinghua"
    查看元素
    > sadd school_1 fudan
    (integer) 1
     smembers school_1
    1) "beida"
    2) "fudan"
    3) "qinghua"
    
    > srem school_1 fudan   #删除元素fudan
    (integer) 1
    > smembers school_1
    1) "beida"
    2) "qinghua"
    删除元素
    > smembers school_1
    1) "beida"
    2) "qinghua"
    
    > scard school_1
    (integer) 2
    查看集合元素的个数
    #交集就是取出集合之间共同拥有的元素
    
    > smembers school_1
    1) "beida"
    2) "qinghua"
    
    > smembers school_2
    1) "fudan"
    2) "qinghua"
    3) "wangyi"
    
    > sinter school_1 school_2
    1) "qinghua"
    获取多个集合的交集
    #并集就是取出集合的所有元素,重复的元素只保留1个,因为集合不能有重复的元素
    
    > smembers school_1
    1) "beida"
    2) "qinghua"
    
    > smembers school_2
    1) "fudan"
    2) "qinghua"
    
    > sunion schoo_1 school_2
    1) "fudan"
    2) "wangyi"
    3) "qinghua"
    获取多个集合的并集
    > smembers school_1
    1) "beida"
    2) "qinghua"
    > smembers school_2
    1) "fudan"
    2) "qinghua"
    3) "wangyi"
    
    > sdiff school_1 school2  #把school_2中不含有schoo_1中的元素去掉
    1) "beida"
    2) "qinghua"
    
    > sdiff school_2 school1 #把school_1中不含有schoo_2中的元素去掉
    1) "fudan"
    2) "wangyi"
    3) "qinghua"
    获取多个集合的差集

    redis的哈希操作

    > hset person name heboan
    (integer) 1
    > hset person age 18
    (integer) 1
    添加新值
    > hget person name
    "heboan"
    
    > hget person age
    "18"
    获取哈希中field对应的值
    #删除指定filed
    > hdel person name
    (integer) 1
    > hget person name
    (nil)
    
    #删除多个 field
    > hdel person name age
    (integer) 2
    删除field
    > hset person name heboan
    (integer) 1
    > hset person age 18
    (integer) 1
    > hset person gender male
    (integer) 1
    
    > hkeys person
    1) "name"
    2) "age"
    3) "gender"
    获取某个哈希中所有的field
    > hvals person
    1) "heboan"
    2) "18"
    3) "male"
    获取某个哈希中所有的值
    > hexists person name  #person中存在name
    (integer) 1
    
    > hexists person money  #不存在monery
    (integer) 0
    判断哈希中是否存在某个field
    > hlen person
    (integer) 3
    获取某个哈希中键值对的个数

    redis的事务操作

    redis事务可以一次执行多个命令,事务具有以下特征:

    隔离操作:事务中的所有命令都会序列化,按顺序执行,不会被其他命令打扰

    原子操作:事务中的命令要么全部被执行,要么全部都不执行

    开启一个事务

    multi

    以后执行的所有命令,都在这个事务中执行

    执行事务

    exec

    会将multi和exec中的操作一并提交

    一旦事务中执行的命令发生错误或者异常,整个事务都不会执行

    取消事务,如果中途想取消事务可以使用命令discard

     监视一个key或者多个key ,如果在事务执行之前,被监视的key被其他命令所改动,那么事务将被打断

    取消所有key的监视

    > unwatch

    发布订阅操作

  • 相关阅读:
    HDU 1002 A + B Problem II
    HDU 2602 Bone Collector WA谁来帮忙找找错
    爬楼梯问题-最大迈两步
    2106 Problem F Shuffling Along 中石油-未提交-->已提交
    2101 Problem A Snake Filled
    2078 Problem H Secret Message 中石油-未提交-->已提交
    有关 时间 空间 以及 数据类型 的总结
    hdu 2510
    hdu 1133 卡特兰 高精度
    hdu 2067
  • 原文地址:https://www.cnblogs.com/sellsa/p/9420385.html
Copyright © 2011-2022 走看看