Redis简介 数据类型及常用命令

简介

NoSQL:Not-Only SQL,只非关系型数据库

NoSQL分类:

类型数据模型产品应用优势劣势
key-value数据库键值对Redis缓存,处理大量数据的高并发访问查询快存储的数据缺少结构化
列存储数据库以列族存储Hbase分布式文件系统查找快,扩展性强功能较局限
文档型数据库键值对MongoDBWeb应用数据结构妖气不严格查询慢,切没有同一查询语法
图形数据库Neo4J社交网络便于利用图结构相关算法需要对整个图计算才能得出结果,不易进行分布式扩展

Redis简介:Redis是一个开源的高性能的键值对数据库

Redis的键值类型:字符串,HashTable, Set, Sorted Set, list

Redis应用场景:缓存经常被查询的数据,分布式集群中的session分离,聊天室的在线好友列表,任务队列,应用排行榜,网址访问统计,数据过期处理

数据类型

String,HashTable, Set, Sorted Set, list

String

常用命令
  1. 赋值

    SET key value
    
    127.0.0.1:6379> set test fdsafdsafdsa
    OK
    
  2. 取值

    GET key
    
    127.0.0.1:6379> get test
    "fdsafdsafdsa"
    
  3. 设置/获取多个键值

    MSET key value [key value …]
    MGET key [key …]
    
    127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
    OK
    127.0.0.1:6379> mget k1 k2 k3
    1) "v1"
    2) "v2"
    3) "v3"
    
  4. 取值并赋值

    GETSET key value
    
    127.0.0.1:6379> GETSET k1 vv1
    "v1"
    127.0.0.1:6379> GET k1
    "vv1"
    
  5. 删除

    DEL key
    
    127.0.0.1:6379> del k1
    (integer) 1
    
  6. 数值增减

    INCR key // 加一
    INCRBY key increment // 加increment
    DECR key	// -1
    DECRBY key decrement // -decrement
    
    127.0.0.1:6379> set k1 1
    OK
    127.0.0.1:6379> get k1
    "1"
    127.0.0.1:6379> incr k1
    (integer) 2
    127.0.0.1:6379> get k1
    "2"
    127.0.0.1:6379> INCRBY k1 5
    (integer) 7
    127.0.0.1:6379> get k1
    "7"
    127.0.0.1:6379> DECR k1
    (integer) 6
    127.0.0.1:6379> GET k1
    "6"
    127.0.0.1:6379> DECRBY k1 5
    (integer) 1
    127.0.0.1:6379> get k1
    "1"
    
  7. 向尾部追加值

    APPEND key value
    
    127.0.0.1:6379> APPEND k1 abc
    (integer) 4
    127.0.0.1:6379> get k1
    "1abc"
    
  8. 获取字符串长度

    STRLEN key
    
    127.0.0.1:6379> STRLEN k1
    (integer) 4
    
应用

INCR :可以作为自增主键,生成订单号

Hash类型

image-20201209183748554

命令
  1. 赋值

    1. 设置一个字段

      HSET key field value
      
      127.0.0.1:6379> HSET user username zhangsan
      (integer) 1
      
    2. 设置多个字段

      HMSET key field value [field value ...]
      
      127.0.0.1:6379> HSET user username zhangsan age 18
      (integer) 1
      
    3. 当字段不存在时赋值

      HSETNX key field value
      
      127.0.0.1:6379> HSETNX user username zhang
      (integer) 0
      127.0.0.1:6379> HSETNX user sex man
      (integer) 1
      
  2. 取值

    1. 获取一个字段值

      HGET key field
      
      127.0.0.1:6379> HGET user username
      "zhangsan"
      
    2. 获取多个字段值

      HMGET key field [field ...]
      
      127.0.0.1:6379> HMGET user username age
      1) "zhangsan"
      2) "18"
      
    3. 获取所有字段值

      HGETALL key
      
      127.0.0.1:6379> HGETALL user 
      1) "username"
      2) "zhangsan"
      3) "age"
      4) "18"
      5) "sex"
      6) "man"
      
  3. 删除字段

    1. 删除一个/多个字段

      HDEL key field [field ...]
      
      127.0.0.1:6379> HDEL user name age
      (integer) 1
      127.0.0.1:6379> HGETALL user
      1) "username"
      2) "zhangsan"
      3) "sex"
      4) "man"
      
  4. 增加数字

    HINCRBY key field increment
    
    127.0.0.1:6379> HINCRBY user age 20
    (integer) 38
    127.0.0.1:6379> HGET user age
    "38"
    
  5. 判断字段是否存在

    HEXISTS key field
    
    127.0.0.1:6379> HEXISTS user abc
    (integer) 0
    127.0.0.1:6379> HEXISTS user age
    (integer) 1
    
  6. 获取所有的字段值或字段名

    HKEYS key
    HVALS key
    
    127.0.0.1:6379> HKEYS user
    1) "username"
    2) "sex"
    3) "age"
    127.0.0.1:6379> HVALS user
    1) "zhangsan"
    2) "man"
    3) "38"
    
  7. 获取字段数量

    HLEN key
    
    127.0.0.1:6379> HLEN user
    (integer) 3
    
应用

保存商品信息

列表

常用命令
  1. 向列表两端添加元素

    LPUSH key value [value ...]
    RPUSH key value [value ...]
    
    127.0.0.1:6379> LPUSH list 1 2 3
    (integer) 3
    127.0.0.1:6379> RPUSH list 4 5 6
    (integer) 6
    
  2. 查看列表中的值

    LRANGE key start stop
    
    127.0.0.1:6379> LRANGE list 0 -1
    1) "3"
    2) "2"
    3) "1"
    4) "4"
    5) "5"
    6) "6"
    127.0.0.1:6379> LRANGE list 0 2
    1) "3"
    2) "2"
    3) "1"
    
  3. 从列表两端弹出元素

    LPOP key
    RPOP key
    
    127.0.0.1:6379> LPOP list
    "3"
    127.0.0.1:6379> RPOP list
    "6"
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "1"
    3) "4"
    4) "5"
    
  4. 获取列表中元素的个数

    LLEN key
    
    127.0.0.1:6379> LLEN list
    (integer) 4
    
  5. 删除列表中的指定值

    count > 0 从左往右删除count个等于value的元素

    count < 0 从右向左删除count个等于value的元素

    count = 0 删除所有等于value的元素

    LREM key count value
    
  6. 获取/设置指定位置上的元素

    LINDEX key index
    LSET key index value
    
    127.0.0.1:6379> LINDEX list 2
    "4"
    127.0.0.1:6379> LSET list 2 6
    OK
    127.0.0.1:6379> LINDEX list 2
    "6"
    
  7. 保留列表中指定片段

    LTRIM key start stop
    
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "1"
    3) "6"
    4) "5"
    127.0.0.1:6379> LTRIM list 0 2
    OK
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "1"
    3) "6"
    
  8. 在指定元素前后插入元素

    LINSERT key BEFORE|AFTER pivot value
    
    127.0.0.1:6379> LINSERT list before 1 3
    (integer) 4
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "3"
    3) "1"
    4) "6"
    127.0.0.1:6379> LINSERT list after 1 3
    (integer) 5
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "3"
    3) "1"
    4) "3"
    5) "6"
    
  9. 将列表中的最右边的元素移动到另一个列表的最左边

    RPOPLPUSH source destination
    
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "3"
    3) "1"
    4) "3"
    5) "6"
    127.0.0.1:6379> RPOPLPUSH list newlist
    "6"
    127.0.0.1:6379> LRANGE list 0 -1
    1) "2"
    2) "3"
    3) "1"
    4) "3"
    127.0.0.1:6379> LRANGE newlist 0 -1
    1) "6"
    
应用

保存评论

Set

常用命令
  1. 增加删除元素

    SADD key member [member ...]
    SREM key member [member ...]
    
    127.0.0.1:6379> SADD set 1 1 3 4
    (integer) 3
    127.0.0.1:6379> SMEMBERS set
    1) "1"
    2) "3"
    3) "4"
    127.0.0.1:6379> SREM set 3
    (integer) 1
    127.0.0.1:6379> SMEMBERS set
    1) "1"
    2) "4"
    
  2. 获得集合中所有元素

    SMEMBERS key
    
    127.0.0.1:6379> SMEMBERS set
    1) "1"
    2) "4"
    
  3. 判断元素是否存在

    SISMEMBER key member
    
    127.0.0.1:6379> SISMEMBER set 1
    (integer) 1
    127.0.0.1:6379> SISMEMBER set 2
    (integer) 0
    
    
  4. 求集合的差集

    SDIFF key [key ...]
    
    127.0.0.1:6379> SADD seta 1 2 3 4 5
    (integer) 5
    127.0.0.1:6379> SADD setb 3 4 5 6 7
    (integer) 5
    127.0.0.1:6379> SDIFF seta setb
    1) "1"
    2) "2"
    127.0.0.1:6379> SDIFF setb seta
    1) "6"
    2) "7"
    
  5. 求集合的交集

    SINTER key [key ...]
    
    127.0.0.1:6379> SINTER seta setb
    1) "3"
    2) "4"
    3) "5"
    
  6. 并集

    SUNION key [key ...]
    
    127.0.0.1:6379> SUNION seta setb
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    5) "5"
    6) "6"
    7) "7"
    
  7. 集合中元素的个数

    SCARD key
    
    127.0.0.1:6379> SCARD seta
    (integer) 5
    
  8. 从集合中随机弹出一个元素

    SPOP key
    
    127.0.0.1:6379> SPOP seta
    "5"
    127.0.0.1:6379> SMEMBERS seta
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    

Sroted Set

常用命令
  1. 添加元素

    ZADD key score member [score member ...]
    
    127.0.0.1:6379> zadd zset 1 1 3 2 2 3
    (integer) 3
    
  2. 获得某个元素的分数

    ZSCORE key member
    
    127.0.0.1:6379> ZSCORE zset 3
    "2"
    
  3. 获取排名在某个范围内的元素

    ZRANGE key start stop [WITHSCORES]
    ZREVRANGE key start stop [WITHSCORES]	
    
    127.0.0.1:6379> ZRANGE zset 0 -1
    1) "1"
    2) "3"
    3) "2"
    127.0.0.1:6379> ZREVRANGE zset 0 -1
    1) "2"
    2) "3"
    3) "1"
    127.0.0.1:6379> ZRANGE zset 0 1
    1) "1"
    2) "3"
    127.0.0.1:6379> ZREVRANGE zset 0 1
    1) "2"
    2) "3"
    127.0.0.1:6379> ZREVRANGE zset 0 1 withscores
    1) "2"
    2) "3"
    3) "3"
    4) "2"
    
  4. 获得指定分数范围内的元素

    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    
    127.0.0.1:6379> ZRANGEBYSCORE zset 0 2 
    1) "1"
    2) "3"
    127.0.0.1:6379> ZRANGEBYSCORE zset 0 2 withscores
    1) "1"
    2) "1"
    3) "3"
    4) "2"
    127.0.0.1:6379> ZRANGEBYSCORE zset 0 2 limit 1 1
    1) "3"
    127.0.0.1:6379> ZRANGEBYSCORE zset 0 2 limit 0 1
    1) "1"
    127.0.0.1:6379> ZRANGEBYSCORE zset 0 2 limit 0 2
    1) "1"
    2) "3"
    
  5. 增加某个元素的分数

    ZINCRBY  key increment member
    
    127.0.0.1:6379> ZINCRBY zset 3 3
    "5"
    127.0.0.1:6379> ZSCORE zset 3
    "5"
    
  6. 获得集合中元素的数量

    ZCARD key
    
    127.0.0.1:6379> ZCARD zset
    (integer) 3
    
    
  7. 获得指定分数内元素的个数

    ZCOUNT key min max
    
    127.0.0.1:6379> ZCOUNT zset 0 4
    (integer) 2
    
  8. 按照排名范围删除元素

    ZREMRANGEBYRANK key start stop
    
  9. 按照分数范围删除元素

    ZREMRANGEBYRANK key start stop
    
  10. 获取元素排名

    ZRANK key member
    ZREVRANK key member
    
    127.0.0.1:6379> ZRANK zset 3
    (integer) 2
    127.0.0.1:6379> ZREVRANK zset 3
    (integer) 0
    
    
应用

排行榜

其他命令

  1. 设置Key的生存时间

    EXPIRE key seconds
    
    127.0.0.1:6379> EXPIRE test 60
    (integer) 1
    
  2. 查看Key的生存时间

    TTL key 
    
    127.0.0.1:6379> TTL test
    (integer) 54
    
  3. 清除生存时间

    PERSIST key
    
    127.0.0.1:6379> PERSIST test
    (integer) 1
    127.0.0.1:6379> TTL test
    (integer) -1
    
  4. 使用毫秒设置key的生存时间

    PEXPIRE key milliseconds
    
  5. 查找key

    keys pattern
    
    127.0.0.1:6379> keys set
    1) "set"
    127.0.0.1:6379> keys *set
    1) "set"
    2) "zset"
    
    
  6. 判断KEY是否存在

    EXISTS key [key...]
    
    127.0.0.1:6379> EXISTS set zset ss
    (integer) 2
    
    
  7. 删除key

    del key [key...]
    
  8. 重命名key

    RENAME key newkey
    
    127.0.0.1:6379> keys k*
    1) "k2"
    2) "kk"
    3) "k3"
    127.0.0.1:6379> RENAME kk k1
    OK
    127.0.0.1:6379> keys k*
    1) "k1"
    2) "k2"
    3) "k3"
    
    
  9. key的类型

    type key
    
    127.0.0.1:6379> type kk
    none
    127.0.0.1:6379> type k1
    string
    
    

27.0.0.1:6379> TTL test
(integer) -1
```

  1. 使用毫秒设置key的生存时间

    PEXPIRE key milliseconds
    
  2. 查找key

    keys pattern
    
    127.0.0.1:6379> keys set
    1) "set"
    127.0.0.1:6379> keys *set
    1) "set"
    2) "zset"
    
    
  3. 判断KEY是否存在

    EXISTS key [key...]
    
    127.0.0.1:6379> EXISTS set zset ss
    (integer) 2
    
    
  4. 删除key

    del key [key...]
    
  5. 重命名key

    RENAME key newkey
    
    127.0.0.1:6379> keys k*
    1) "k2"
    2) "kk"
    3) "k3"
    127.0.0.1:6379> RENAME kk k1
    OK
    127.0.0.1:6379> keys k*
    1) "k1"
    2) "k2"
    3) "k3"
    
    
  6. key的类型

    type key
    
    127.0.0.1:6379> type kk
    none
    127.0.0.1:6379> type k1
    string
    
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值