一、启动

  1、服务端启动

    redis-server

  2、客户端启动

    (1)redis-cli  不支持中文

    (2)redis-cli --raw  支持中文

  3、运行测试命令

    ping

    返回PONG则代表连通

二、切换数据库

  1、切换数据库

    select n

    redis一共有15个数据库,故0≤n≤15,默认为0数据库

三、redis键值对说明

  1、redis是key-value的数据结构

  2、每条数据都是一个键值对

  3、键(key)的类型是字符串(string)

  4、值(value)的类型分为5种:字符串(string)、哈希(hash)、列表(list)、无序集合(set)、有序集合(zset)

四、字符串(string)

  说明:字符串是redis最基本的类型

  1、添加修改值  set

    格式:set key value  

      如果键存在则是添加

      如果不存在则是修改

    案例:set user1 aa  添加一个键为user1 值为aa

       set user1 bb  将键为user1的值修改为bb

  2、设置键值及过期时间  setex

    格式:setex key seconds value  这里过期时间seconds的单位为秒

    案例:setex user2 5 cc  设置键为user2 值为cc 过期时间为5s 

  3、设置多个键值  mset

    格式:mset key1 value1 key2 value2 ...

    案例:mset user3 dd user4 ee

  4、追加值  append

    格式:append key value

    案例:append user1 ff    get user1就返回bbff

  5、获取值  get/mget

    (1)获取单个值

      格式:get key

      案例:get user3  返回dd

    (2)获取多个值

      格式:mget key1 key2 ...

      案例:mget user3 user4  返回dd ee

  6、查找 keys

    格式1:keys key  查找单个键值对

    格式2:keys *  查找所有键值对

    案例1:keys user1

      返回user1则该键查找到了

      返回为空则该键没查找到

    案例2:keys *

      返回 user1 user3 user4

  7、查看键值对是否存在 exists

    格式:exists key 

    返回:

      1:存在;

      0:不存在

  8、查看键值对类型 type

    格式:type key

    案例:type user1

    返回:string

  9、设置键过期时间 expire

    格式:expire key second

    案例:expire user1 5  给user1设置5s过期

    注:expire跟setex的区别:expire是给已存在的键值对设置过期时间,而setex则是添加键值对并且设置过期时间

  10、查看过期时间 ttl

    格式:ttl key

      说明:

        返回值:>0:实时有效时间,单位s,=-1:永久有效;=-2:键值对不存在

  11、删除 del

    (1)删除单个键值对

      格式:del key

      案例:del user3

    (2)删除多个键值对

      格式:del key1 key2 ...

      案例:del user3 user 4

五、哈希(hash)

  说明:

    (1)、hash是用于存储'键值对'集合

    (2)、每个hash中的键可以理解为字段(filed),一个字段(filed)对应一个值(value)

    (3)、hash中值(value)的类型为字符串(string)

    (4)、同一个hash中字段名(filed)不可重复

  1、新增单个字段 hset

    格式:hset key filed value

    案例:hset huser1 name tom  新增一个hash,其中key为huser1,filed为name,value为tom

  2、新增多个字段 hmset

    格式:hmset key filed1 value1 filed2 value2 ...

    案例:hmset huser2 name marry sex nv age 10  

    新增一个hash,key为huser2,filed1为name,value1为marry,filed2为sex,value2为nv,filed3为age,value2为10

  3、获取hash中的键和值 hget/hkeys/hvals/hgetall

    (1)获取单个值 hget

      格式:hget key filed

      案例:hget huser2 name ---->marry

    (2)获取多个值 hmget

      格式1:hkeys key filed1 filed2

      案例:hmget huser2 name sex ---->marry nv两个值

    (3)获取所有字段 hkeys

      格式:hkeys key

      案例:hkeys huser1 ---->name sex age三个键

    (4)获取所有值hvals 

 

      格式:hvals key

      案例:hvals huser2 ---->marry nv 10三个值

    (5)获取包含字段(filed)的值(value):hgetall

      格式:hgetall key

      案例:hgetall huser2 ----> name marry sex nv age 10

  4、删除值 hdel

      格式:hdel key filed1 filed2 ...

      案例:hdel huser2 name sex

      hgetall huser2 ---->age 10只剩最后一个组了

  5、删除整个hash del

      格式:del key

      案例:del huser2

         keys * ---->空,证明被删除了

六、列表

  说明:

    (1)、列表中的value的类型为string

    (2)、列表中每个值按添加的顺序排列

    (3)、列表中的每个值是可以重复的

  1、新增 lpush/rpush/linsert

    (1)从左侧添加 lpush

      格式:lpush key value1 value2 value3

      案例:lpush luser1 aa bb cc

    (2)从右侧添加 rpush

      格式:rpush key value1 value2 value3

      案例:rpush luser1 dd ee ff

    (3)按指定位置添加 linsert

      格式:linsert key before/after value(指定值) value1

      案例:linsert luser1 before dd xx  在dd左侧添加一个xx

  2、获取 lrange

    格式:lrange key start stop  按索引获取

    案例:lrange luser1 0 -1 ---->cc bb aa xx dd ee ff

      说明:0代表首位,-1代表末尾 故此处是获取整个列表

  3、修改 lset

    格式:lset key index value  按照指定索引位置修改

    案例:lset key 3 yy

       lrange luser1 0 -1 ---->cc bb aa yy dd ee ff,xx变为yy了

  4、删除值 lreml

    (1)删除单个或多个相同值

      格式:lrem key count value  (count>0:从头往为删count个value,count=0:删除所有value,count<0:从尾往头删count个value)

      案例:新增列表:rpush luser2 h0 h1 h2 h3 h0 h1 h2 h0 h1 h2

        (1)从头往尾删除2个h0

          lrem luser2 2 h0

          lrange luser1 0 -1 ---->h1 h2 h3 h1 h2 h0 h1 h2,此处前两个h0被删除了

        (2)从尾往头删除2个h1

          lrem luser2 -2 h1

          lrange luser1 0 -1 ---->h1 h2 h3 h2 h0 h2 后两个h1被删除了

        (2)删除所有h2

          lrem luser2 0 h2

          lrange luser1 0 -1 ---->h1 h3 h0 此处h2被删除完了

    5、删除列表 del

      格式:del key    

      案例:del luser1

         keys * ---->空,

七、有序集合 set   

  说明:

 

    (1)有序集合里的value类型为string

 

    (2)集合里不允许存在重复值

 

    (3)集合里的值只能添加和删除,不能修改

  1、新增/添加 sadd

    key存在则为添加

    key不存在则新增

    格式:sadd key value1 value2 ...

    案例:sadd suser1 aa bb cc dd

  2、返回 smembers

    格式:smembers key

    案例:smembers suser1 ---->aa bb cc dd

  3、删除指定值 srem

     格式:srem key value1 value2

     案例:srem suser1 aa bb

        smembers suser1 ---->cc dd ,aa和bb已经被删除

  4、删除集合 del

      格式:del key

      案例:del suser1

      keys * ---->空 证明已经被删除了

 

八、有序集合 zset

  说明:

    (1)有序集合里的value类型为string

    (2)集合里不允许存在重复值

    (3)每个值都会关联一个分数(score),分数(score)可以为负数

    (4)集合里的值只能添加和删除,不能修改

  1、新增/添加 zadd  

    key存在则为添加

    key不存在则新建

    格式:zadd key score1 value1 score2 value2 ...

    案例:zadd zuser1 1 aa 5 bb 8 cc 3 dd

  2、获取 zrange/zrangebyscore/zscore

    (1)获取所有 zrange

      格式:zrange key start stop

      案例:zrange zuser1 0 -1 ---->aa bb cc dd

    (2)获取所有值及分数 zrange

      格式:zrange key start stop withscores

      案例:zrange zuser1 0 -1 withscores -->aa 1 bb 5 cc 8 dd 3

    (3)按分数范围获取 zrangebyscore

      格式:zrangebyscore key min max

      案例:zrangebyscore zuser1 2 6 ---->dd bb

    (4)返回值的分数 zscore

      格式:zscore key value

      案例:zscore zuser1 aa ---->1

  3、删除值 zrem

    (1)删除指定值 zrem

      格式:zrem key value1 value2 ...

      案例:zrem zuser1 aa bb

         zrange zuser1 0 -1 ---->cc dd,aa和bb被删除

    (2)按分数范围删除 zremrangebyscore

      格式:zremrangebyscore key min max

      案例:zremrangebyscore zuser1 2 6  删除分数在2到6之间的值

         zrange zuser1 0 -1 ---->dd,只剩dd了,aa和bb在上面已经被删除了,集合里还剩cc 8 dd 3,dd的分数在2到6之间,故删除,就只剩dd

  4、删除集合 del

    格式 del key

    案例:del zuser1

    keys * ---->空,证明已经被删除了

 

 

注:redis错误解决:

  错误提示:(error) MISCONF Redis is configured to save RDB snapshots

  解决方法:127.0.0.1:6379> CONFIG SET stop-writes-on-bgsave-error no