zoukankan      html  css  js  c++  java
  • redis基础命令

    一、redis特点:

    1.以key,value键值对保存
    2.持久化
    3.服务器关机了还能保存
    4.支持几种数据类型
    5.单线程
    6.一共有16个数据库(索引为0-15,db0-db15)
    7.默认端口:6379

    二、String和key常用命令

    1.切换redis中的数据库:

    切换到1数据库:select 0
    切换到16数据库:select 15
    

    2.查询数据库中key的数量

    DBSIZE
    

    3.查询数据库中的所有key

    keys *

    4.查询key以什么开头的所有key

    查询所有以k开头的所有key:keys k?
    

    5.清除当前库中的所有key

    FLUSHDB

    6.清除所有库中的所有key

    FLUSHALL
    

    7.判断某个key是否存在,存在返回1,不存在返回0

    exists key的名字  存在返回1,不存在返回0
    

    8.将某个key移到某个库

    例如:将k1移到2号库
    move k1 1
    

    9.给指定的key设置过期时间:前提是该key已经添加到redis中了:说明:一旦key过期,redis便自动将其从内存中移除出去

    expire key名称 秒钟    不设置表示永不过期
    eg:expire k1 10表示给k1设置10秒过期时间

    10.查询指定key还有多少秒过期

    ttl key名称     返回-1表示永不过期,-2表示已过期
    

    11.删除key

    DEL key名称  eg:DEL k1
    

    12.向库中添加数据:如果该key已经存在,则会覆盖原来的内容

    set k1 v1之后  再执行set k1 v2  这时再用get k1取出来的数据就为v2
    

    13.向数据库中添加数据的时候加上过期时间

    setex key名称 有效时间秒数 值
    eg:setex k5 10 v5    意思就是将k5加入到数据库中有效期为10秒,值为v5
    

    14.向数据库中添加数据,如果key已经存在则不添加并且返回0,如果key不存在则key添加返回1

    setnx key名称
    

    15.批量向redis中添加key,value

    mset k1 v1 k2 v2 k3 v3  :会覆盖
    msetnx k1 v1 k5 v5    :如果这里面有一个key存在则其他的也不会添加

    16.批量根据key获得value

    mget k1 k2 k3
    

    17.查看key的数据类型

    type key名称
    

    redis命令大全:http://www.redis.cn/commands.html

    三、List常用命令:

    1.添加数据

    LPUSH list01 1 2 3 4 5  从左边添加数据
    RPUSH list02 1 2 3 4 5  从右边添加数据

    2.获取数据:这个只是获取数据并不会移除掉当前数据

    lrange key名称 0 -1    表示取出这个key的全部数据,从左边取

    3.取出一个数据:每次只会取出一个数据,这个不仅会获取数据并且还会将该数据从集合中移除掉

    lpop list名称  :lpop list01 取出list01中的第一个数据
    rpop list名称  :rpop list01 取出list01中的最后一个数据

    4.按照索引下表获得元素(从上到下),只是获取并不会删除:索引从0开始

    lindex list名称 索引编号    
    lindex list 01 1
    

    5.删除N个value

    lrem list名称 N value    表示从list集合中删除N个value  

     6.从源列表左边取出数据放到目标列表右边添加

    rpoplpush 源列表 目标列表
    

    7.将某个索引的key换成另一个

    lset key index value
    eg:lset list01 1 x将list01集合的第二个值换成1
    

    8.在某个值前面加个值

    linsert key before/after 已保存值  将要保存的值
    linsett list01 before x java 在list01中x值的前面加个索引值为java
    

    9.说明:如果这个list集合中的所有值都为空了,则这个list的key也就消失了

     四、Set常用命令:(无序无重复)

    1.加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.

    如果key 的类型不是集合则返回错误.

    SADD
    redis> SADD myset "Hello"
    (integer) 1
    redis> SADD myset "World"
    (integer) 1
    redis> SADD myset "World"
    (integer) 0
    redis> SMEMBERS myset
    1) "World"
    2) "Hello"
    redis> 
    

    2.返回key集合所有的元素.该命令的作用与使用一个参数的SINTER 命令作用相同.

    SMEMBERS
    redis> SADD myset "Hello"
    (integer) 1
    redis> SADD myset "World"
    (integer) 1
    redis> SMEMBERS myset
    1) "World"
    2) "Hello"
    redis> 
    

    3.返回集合存储的key的基数 (集合元素的数量).

    SCARD
    redis> SADD myset "Hello"
    (integer) 1
    redis> SADD myset "World"
    (integer) 1
    redis> SCARD myset
    (integer) 2
    redis> 
    

    4.仅提供key参数,那么随机返回key集合中的一个元素

    SRANDMEMBER
    redis> SADD myset one two three
    (integer) 3
    redis> SRANDMEMBER myset
    "one"
    redis> SRANDMEMBER myset 2
    1) "three"
    2) "one"
    redis> SRANDMEMBER myset -5
    1) "one"
    2) "one"
    3) "one"
    4) "one"
    5) "one"
    redis> 
    

    5.移动集合里面的一个元素到另一个集合

    SMOVE
    redis> SADD myset "one"
    (integer) 1
    redis> SADD myset "two"
    (integer) 1
    redis> SADD myotherset "three"
    (integer) 1
    redis> SMOVE myset myotherset "two"
    (integer) 1
    redis> SMEMBERS myset
    1) "one"
    redis> SMEMBERS myotherset
    1) "three"
    2) "two"
    redis> 
    

    6.返回一个集合与给定集合的差集的元素.(在第一个集合里面不在第二个集合里面)

    SDIFF
    假如:
    key1 = {a,b,c,d}
    key2 = {c}
    key3 = {a,c,e}
    SDIFF key1 key2 key3 = {b,d}
    
    举例:
    redis> SADD key1 "a"
    (integer) 1
    redis> SADD key1 "b"
    (integer) 1
    redis> SADD key1 "c"
    (integer) 1
    redis> SADD key2 "c"
    (integer) 1
    redis> SADD key2 "d"
    (integer) 1
    redis> SADD key2 "e"
    (integer) 1
    redis> SDIFF key1 key2
    1) "a"
    2) "b"
    redis> 
    

    7.获取两个集合的交集

    SINTER 
    key1 = {a,b,c,d}
    key2 = {c}
    key3 = {a,c,e}
    SINTER key1 key2 key3 = {c}
    
    
    redis> SADD key1 "a"
    (integer) 1
    redis> SADD key1 "b"
    (integer) 1
    redis> SADD key1 "c"
    (integer) 1
    redis> SADD key2 "c"
    (integer) 1
    redis> SADD key2 "d"
    (integer) 1
    redis> SADD key2 "e"
    (integer) 1
    redis> SINTER key1 key2
    1) "c"
    redis> 
    

    8.获取两个集合的并集

    SUNION 
    key1 = {a,b,c,d}
    key2 = {c}
    key3 = {a,c,e}
    SUNION key1 key2 key3 = {a,b,c,d,e}
    
    redis> SADD key1 "a"
    (integer) 1
    redis> SADD key1 "b"
    (integer) 1
    redis> SADD key1 "c"
    (integer) 1
    redis> SADD key2 "c"
    (integer) 1
    redis> SADD key2 "d"
    (integer) 1
    redis> SADD key2 "e"
    (integer) 1
    redis> SUNION key1 key2
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "e"
    redis> 

    五、哈希常用命令:K,V模式不变,但V是一个键值对

    1.设置 key 指定的哈希集中指定字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段在哈希集中存在,它将被重写。

    HSET 
    redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HGET myhash field1
    "Hello"
    redis> 
    

    2.返回 key 指定的哈希集中该字段所关联的值

    HGET 
    redis> HSET myhash field1 "foo"
    (integer) 1
    redis> HGET myhash field1
    "foo"
    redis> HGET myhash field2
    (nil)
    redis> 
    

    3.设置 key 指定的哈希集中指定字段的值。该命令将重写所有在哈希集中存在的字段。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联

    HMSET 
    redis> HMSET myhash field1 "Hello" field2 "World"
    OK
    redis> HGET myhash field1
    "Hello"
    redis> HGET myhash field2
    "World"
    redis> 
    

    4.返回 key 指定的哈希集中指定字段的值。对于哈希集中不存在的每个字段,返回 nil 值。因为不存在的keys被认为是一个空的哈希集,对一个不存在的 key 执行 HMGET 将返回一个只含有 nil 值的列表

    HMGET 
    redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HMGET myhash field1 field2 nofield
    1) "Hello"
    2) "World"
    3) (nil)
    redis> 
    

    5.返回 key 指定的哈希集中所有的字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍

    HGETALL 
    redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HGETALL myhash
    1) "field1"
    2) "Hello"
    3) "field2"
    4) "World"
    redis> 
    

    6.从 key 指定的哈希集中移除指定的域。在哈希集中不存在的域将被忽略。如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,该命令将返回0。

    HDEL 
    redis> HSET myhash field1 "foo"
    (integer) 1
    redis> HDEL myhash field1
    (integer) 1
    redis> HDEL myhash field2
    (integer) 0
    redis> 
    

    7.返回 key 指定的哈希集中所有字段的名字

    HKEYS 
    redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HKEYS myhash
    1) "field1"
    2) "field2"
    redis> 
    

    8.返回 key 指定的哈希集中所有字段的值。

    HVALS 
    redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HVALS myhash
    1) "Hello"
    2) "World"
    redis> 
    

    9.只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段已存在,该操作无效果。

    HSETNX 
    redis> HSETNX myhash field "Hello"
    (integer) 1
    redis> HSETNX myhash field "World"
    (integer) 0
    redis> HGET myhash field
    "Hello"
    redis> 

    六、ZSet常用命令:有序集合(在set的基础上加了score值,之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2)

    1.添加

    ZADD 
    redis> ZADD myzset 1 "one"
    (integer) 1
    redis> ZADD myzset 1 "uno"
    (integer) 1
    redis> ZADD myzset 2 "two" 3 "three"
    (integer) 2
    redis> ZRANGE myzset 0 -1 WITHSCORES
    1) "one"
    2) "1"
    3) "uno"
    4) "1"
    5) "two"
    6) "2"
    7) "three"
    8) "3"
    redis> 
    

    2.获取值 ZRANGE key start stop [WITHSCORES]

    ZADD myzset 1 "one"
    ZADD myzset 2 "two"
    ZADD myzset 3 "three"
    ZRANGE myzset 0 -1
    ZRANGE myzset 2 3
    ZRANGE myzset -2 -1

    六、reids的五大数据类型

    1.String(字符串):一个key对应一个value
    2.Hash(类似java里的map)
    3.List(列表)
    4.Set(集合):无序无重复
    5.Zset(sorted set 有序集合)
    

      

  • 相关阅读:
    [转]C#正则表达式小结
    Silverlight 参考:KeyEventArgs.Handled 属性
    一步一步搭建免费的Silverlight 2开发环境(转载)
    Silverlight2 跨域调用Web服务的方法
    BinaryFormatter 类
    从说事到流程的理解
    比尔盖茨给青少年的11条准则
    燃烧热情
    GOF模式之乱记一通
    学而不思则罔,思而不学则殆
  • 原文地址:https://www.cnblogs.com/wxl123/p/12546436.html
Copyright © 2011-2022 走看看