zoukankan      html  css  js  c++  java
  • redis常用命令

    全局操作:
    #查看所有key
    keys *  或  keys "*"

    #查看匹配前缀的keys
    keys "miao*"

    #清空redis
    flushdb

    #随机取出一个key
    randomkey

    #查看key的类型
    type key

    #查看数据库中key的数量
    dbsize

    #查看服务器信息
    info

    #查看redis正在做什么
    monitor

    #查看日志

    slowlog get
    slowlog get 10

    1.redis是key-value存储的,放在内存中,并在磁盘持久化的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
    通过set key value来存储,通过get key来获取值
    #设置key的值,若存在则覆盖
    set key value

    #若存在则不操作
    setnx key value

    #设置这些key的值,若存在则覆盖
    MSET key1 value1 key2 value2 ... keyN valueN

    #同mset,但如果其中一个key已经存在了,则都不设置。这些操作都是原子的
    MSETNX key1 value1 key2 value2 ... keyN valueN

    #向key的字符串追加拼接。
    append key value

    #获取key对应的值
    get key

    #获取这些key对应的值
    MGET key1 key2 ... keyN

    #查看是否存在该元素
    EXISTS key

    #获取该元素的值,并给该元素设置新值。(通常和incr搭配使用,比如一个mycount一直incr,然后达到某些情况需要清零,清零之前需要知道mycount的值)
    GETSET key value

    #删除元素
    del key

    #重命名
    RENAME oldkey newkey

    2.redis提供原子自增操作incr,用来防止多线程并发出现数据错误。
    #原子的+1
    incr key

    #原子的-1
    DECR key

    #原子的-integer
    DECRBY key integer

    #原子的+integer
    INCRBY key integer

    3.删除操作:del.若数据不存在返回(nil)

    4.redis可以定时存储,即设置几秒后删除该变量

    #设置该元素多少秒后失效
    EXPIRE key seconds

    #设置该元素多少毫秒后失效
    PEXPIRE key milliseconds

    #查看还可以存活多少秒,-2表示key不存在,-1表示永久存储
    TTL key

    #等价于先设置变量再设置超时,即在缓存中使用:存储的同时设置超时时间,这个操作是原子的
    SETEX key seconds value

    #取消过期时间
    persist key

    #unix时间戳,1970.1.1之后,这个绝对时间,将在这个时间删除key。expireat pages:about 1356933600:在2012年12月31日上午12点删除掉关键字
    expireat key 时间戳

    #设置key的值为value,并在timeout秒后失效,key将被删除
    SETEX KEY_NAME TIMEOUT VALUE

    5.存储有序队列:list

    #向keyList添加元素,向后加,r表示右边
    rpush keyList value

    #向keyList左边添加元素
    lpush keyList value

    #获取keyList的元素,用两端的索引取出子集,endIndex=-1则表示全部取出
    lrange keyList beginIndex endIndex

    #获取keyList的长度大小
    llen keyList

    #取出并移除keyList第一个元素,左边的元素
    lpop keyList

    #取出并移除keyList最后一个元素,右边的元素
    rpop keyList

    #获取该索引下的元素
    LINDEX key index

    #删除count个value(count为正数,从头开始,删除count个value元素;count为负,则从尾部向头删除|count|个value元素;count为0,则所有的元素为value的都删除)
    lrem key count value

    #设置索引为index下的元素为value.超出索引范围报错
    LSET key index value

    #清空索引在start 和end之外的元素,索引从0开始,两端保留,两端之外的清空
    LTRIM key start end

    #源队列srckey,目标队列dstkey,将srckey的最后一个移除,并放到dstkey的第一个
    RPOPLPUSH srckey dstkey

    6.无序且唯一集合set
    和java中list与set的区别一样。这里的set无序且值唯一。

    #向set添加元素
    sadd key value

    #从set中移除元素
    srem key value

    #取出所有set元素
    smembers key

    #查看value是否存在set中
    SISMEMBER key value

    #将所有key合并后取出来,相同的值只取一次
    SUNION key1 key2 ... keyN

    #获取set中元素的个数
    scard key

    #随机取出一个
    SRANDMEMBER key

    #获取第一set中不存在后面几个set里的元素
    SDIFF key1 key2 ... keyN

    #和sdiff相同,获取key1中不存在其他key里的元素,但要存储到dstkey中
    SDIFFSTORE dstkey key1 key2 ... keyN

    #取出这些set的交集
    SINTER key1 key2 ... keyN

    #取出这些key的交集并存储到dstkey
    SINTERSTORE dstkey key1 key2 ... keyN

    #将元素member从srckey中转移到dstkey中,这个操作是原子的
    SMOVE srckey dstkey member

    7.有序集合sorted set
    和set一样,唯一。但多了个score用来排序。所以命令又像list一样

    #向有序set中添加元素member,其中score为分数,默认升序
    ZADD key score member

    #获取按score从低到高索引范围内的元素,索引可以是负数,-1表示最后一个,-2表示倒数第二个,即从后往前。withscores可选,表示获取包括分数
    ZRANGE key start end [WITHSCORES]

    #同上,但score从高到低排序
    ZREVRANGE key start end [WITHSCORES]

    #获取score在min和max范围内的元素的个数
    ZCOUNT key min max

    #获取集合中元素的个数
    ZCARD key

    #根据元素,score原子增加increment
    ZINCRBY key increment member

    #清空集合内的score位于min和max之间的元素
    ZREMRANGEBYSCORE key min max

    #获取元素的索引(照score从低到高排列)
    ZRANK key member

    #移除集合中的该元素
    ZREM key member

    #获取该元素的score
    ZSCORE key member

    8.对象存储Hashes

    #key是对象名,field是属性,value是值
    HSET key field value

    #同时设置多个属性
    HMSET key field value [field value ...]

    #获取该对象的该属性
    HGET key field

    #获取多个属性值
    HMGET key field value [field value ...]

    #获取对象的所有信息
    HGETALL key

    #获取对象的所有属性
    HKEYS key

    #获取对象的所有属性值
    HVALS key

    #删除对象的该属性
    HDEL key field

    #查看对象是否存在该属性
    HEXISTS key field

    #原子自增操作,只能是integer的属性值可以使用
    HINCRBY key field value

    #获取属性的个数
    HLEN key

    9.sort排序
    返回或保存给定列表、集合、有序集合key中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
    9.1.最简单的sort使用方法是sort key和sort key desc。

    #返回键值从小到大排序的结果
    sort key

    #返回键值从大到小排序的结果
    sort key desc

    9.2.使用alpha修饰符对字符串进行排序
    因为sort命令默认排序对象为数字,当需要对字符串进行排序时,需要显式地在sort命令之后添加alpha修饰符。
    sort key alpha
    sort key alpha desc

    9.3.使用limit修饰符限制返回结果
    排序之后返回元素的数量可以通过limit修饰符进行限制,修饰符接受offset和count两个参数。offset:指定要跳过的元素数量,即起始位置。count:指定跳过offset个指定的元素之后,要返回多少个对象。
    # 返回列表中最小的5个值
    sort key limit 0 5

    9.4.使用外部key进行排序
    可以使用外部 key 的数据作为权重,代替默认的直接对比键值的方式来进行排序。
    #通过使用by选项,可以让key按其他键的元素来排序
    示例: sort uid by user_level_*

    #使用get选项,可以根据排序的结果来取出相应的键值
    示例:sort uid get user_name_*

    #可以同时使用多个get选项,获取多个外部键的值
    示例:sort uid get user_level_* get user_name_*

    #get有一个额外的参数规则,那就是可以用#获取被排序键的值
    示例:sort uid get # get user_level_* get user_name_*

    #通过将一个不存在的键作为参数传给 by 选项, 可以让 sort 跳过排序操作,直接返回结果
    示例:sort uid by not-exists-key

    10.事务
    redis内置了很多原子操作的命令,比如incr,getset等,但实际中我们希望将一组命令原子的执行,这时候就需要用到事物。做法如下:
    a.使用关键字multi
    b.输入你想要的命令组合
    c.输入exec来执行,或discard来放弃

    参考地址:

    http://www.cnblogs.com/woshimrf/p/5198361.html

    http://doc.redisfans.com/

  • 相关阅读:
    sourceTree免密码校验
    elasticsearch 服务安全配置
    qconf 介绍
    解决mysql不能远程登录的问题
    从git上下载代码并导入eclipse
    MAVEN 工程打包resources目录外的更多资源文件
    也谈BIO | NIO | AIO (Java版--转)
    web.xml 配置中classpath: 与classpath*:的区别
    Java @override报错的解决方法
    maven上传自定义jar到本地仓库
  • 原文地址:https://www.cnblogs.com/web424/p/6802587.html
Copyright © 2011-2022 走看看