Redis的五种基本数据类型

打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

Redis的五种基本数据类型

1、概述


  • Redis是一个由C语言开发的基于key-value形式的非关系型数据库

    • key-value:键值对【键:String,值:五种数据类型】

      • 非关系数据库:NoSQL【Not Only SQL】

        • 关系型数据库:由二维表的形式来存储数据
        • 不是关系型数据库,就是非关系型数据库



  • 存储介质

    • 默认是内存
    • 可以持久化到磁盘上

  • 官网

2、Redis的五种基本数据类型


  • string:字符串
  • hash:对象
  • list:有序列表
  • set:无序集合
  • zset:有序集合
3、基本用法

1、string
set        get        getset        mset        mget
setnx        strlen        append        incr        incrby
decr        decrby
  1. #设置key和value,正确返回OK
  2. set key value
  3. set name zhangsan
  4. #获取key对应的value值,若没有返回nil
  5. get key
  6. get name
  7. #返回key对应的value,再重新设置这个key的值
  8. getset key value
  9. getset name lily
  10. #设置多个键值对 正确返回OK
  11. mset k1 v1 k2 v2 ...
  12. mset sex 1 age 20 address hz
  13. #获取多对key对应的value
  14. mget k1 k2 k3 ...
  15. mget sex age address
  16. #设置key-value:如果key不存在,则设置,如果key存在,则什么都不做
  17. #成功返回1,失败返回0
  18. setnx key value
  19. setnx phone 13577889900
  20. #计算key对应的value的长度
  21. strlen key
  22. strlen phone
  23. #在原先的基础之上进行字符串追加
  24. append key value
  25. append address xs
  26. #本来address的值是hz,现在就是hzxs
  27. #自增1,value是数值类型才能成功。如果key不存在,则直接以0为基础,进行自增。如果这个值不是数值,则会报错
  28. incr key
  29. incr age
  30. #age本来是20,现在返回就是21
  31. #自增指定数量,value是数值类型才能成功
  32. incrby age 5
  33. #age本来是20,现在返回就是25
  34. #自减1,value是数值类型才能成功。
  35. decr key
  36. decr age
  37. #age本来是0,现在返回就是-1
  38. #自减指定数量,value是数值类型才能成功
  39. decrby key
  40. decrby age 20
  41. #age本来是30,现在返回就是10
复制代码
2、hash
hset        hmset        hget        hmget        hkeys
hvals        hgetall        hexists        hlen        hsetnx        hdel
  1. #设置值,必须指定大key和小key、value
  2. hset person name tom
  3. #设置多值
  4. hmset person sex 1 age 20
  5. #获取单个小key对应的value
  6. hget person sex
  7. #获取多个小key对应的value们
  8. hmget person name age
  9. #获取所有的小key
  10. hkeys person
  11. #获取所有的小key对应的values
  12. hvals person
  13. #获取所有大key中的键值对
  14. hgetall person
  15. #判断小key是否存在
  16. hexists person age
  17. #求大key中小key的数量
  18. hlen person
  19. #设置小key【小key不存在,则设置成功,如果存在,则什么都不做】
  20. hsetnx person age 25
  21. #删除
  22. hdel person age
复制代码
3、list

  • 增加数据:两种方式

    • 左边增加数据:左压栈,后增加的数据在左边
    • 右边增加数据:右压栈,后增加的数据在右边

  • 读取数据

    • 读取数据从左往右

lpush        rpush        lrange        llen        lindex        lpop        rpop        rpoplpush        lrem
  1. #左压栈
  2. lpush key v1 v2 ...
  3. #特征:存入的数据顺序跟读取顺序相反
  4. #右压栈
  5. rpush key v1 v2 ...
  6. #特征:存入的数据顺序跟读取顺序相同
  7. #查询列表中的数据
  8. #下标从0开始,如果要读到最末尾,endIndex就是-1
  9. lrange key startIndex endIndex
  10. lrange key 0 -1
  11. #获取列表元素的个数
  12. llen key
  13. #获取指定索引的元素,index表示索引
  14. lindex key index
  15. #获取指定索引为3的元素
  16. lindex key 3
  17. #从左边弹出一个元素[获取最左边的元素,再删除它]
  18. lpop key
  19. #从右边弹出一个元素
  20. rpop key
  21. #从一个列表的右边弹出元素,再追到加另一个列表的左边
  22. rpoplpush 源列表 目标列表
  23. #移除count个的value值
  24. lrem key count value
  25. lrem names 2 tom
  26. #删除names列表中2个tom【是从左开始移除】
复制代码
4、set
sadd        scard        smembers        sismember        spop        sdiff        sinter        sunion
sdiffstore        sinterstore        sunionstore        smove
  1. #存值
  2. sadd myset aa bb cc
  3. #返回存入的个数
  4. #获取集合长度
  5. scard myset
  6. #获取集合元素
  7. smembers myset
  8. #判断元素是否在集合中。存在:返回1,不存在:返回0
  9. sismember myset cc
  10. #随机弹出一个元素
  11. spop myset
  12. #随机弹出指定个数元素
  13. spop myset 2
  14. #差集
  15. sdiff myset1 myset2
  16. #交集
  17. sinter myset1 myset2
  18. #并集
  19. sunion myset1 myset2
  20. #将交集结果存入到另一个集合中
  21. #sdiffstore 存储结果的集合名 操作的集合一 操作的集合二
  22. sdiffstore myset3 myset1 myset2
  23. #将交集结果存入到另一个集合中
  24. sinterstore myset4 myset1 myset2
  25. #将并集结果存入到另一个集合中
  26. sunionstore myset5 myset1 myset2
  27. #将myset1中的aa元素移动到myset3
  28. smove myset1 myset3 aa
复制代码
5、zset(sorted set)
zadd        zcard        zrange        zincrby        zscore        zinterstore        zrangebyscore        zrevrangebyscore
zrem        zrank        zremrangebyscore
  1. #向有序集合中增加元素
  2. #zadd 集合名 分数1 名称1 分数2 名称2 ...
  3. zadd tuhaobang 10 zhangsan 80 lisi 30 wangwu
  4. #返回插入的数量
  5. #获取集合中元素的数量
  6. zcard tuhaobang
  7. #获取集合中指定区间的元素名称,如果后面的索引是-1,则返回所有元素名称
  8. zrange tuhaobang 0 -1
  9. 1) "zhangsan"
  10. 2) "wangwu"
  11. 3) "lisi"
  12. #获取集合所有的元素,包括名称和分数【是从小到大排序】
  13. zrange tuhaobang 0 -1 withscores
  14. 1) "zhangsan"
  15. 2) "10"
  16. 3) "wangwu"
  17. 4) "30"
  18. 5) "lisi"
  19. 6) "80"
  20. #获取集合前两位元素的名称和分数
  21. zrange tuhaobang 0 1 withscores
  22. 1) "zhangsan"
  23. 2) "10"
  24. 3) "wangwu"
  25. 4) "30"
  26. #为集合中指定的名称的元素增加分数
  27. zincrby tuhaobang 50 zhangsan
  28. #返回增加后的分数
  29. #返回集合中指定名称的分数
  30. zscore tuhaobang wangwu
  31. #把myzset1和myzset2根据元素名称求出交集,并把相同名称的value加在一起,得到元素名称的新分数,存入到新集合中,成功返回的是交集的个数
  32. #zinterstore 目标集合 操作集合的数量 集合一 集合二 ...
  33. ZINTERSTORE myzset3 2 myzset1 myzset2
  34. #zrangebyscore 集合名称 小分数 大分数 [withscores] [limit 第几条开始显示 显示数量]
  35. #在不知道当前集合中最大值和最小值的情况下,-inf代表最小值   +inf代表最大值
  36. #获取tuhaobang集合中所有元素名称及分数
  37. zrangebyscore tuhaobang -inf +inf withscores
  38. #获取tuhaobang集合中第一个元素名称及分数
  39. zrangebyscore tuhaobang -inf +inf withscores limit 0 1
  40. #获取tuhaobang集合中分数在50-100之间的所有元素名称及分数
  41. zrangebyscore tuhaobang 50 100 withscores
  42. #获取tuhaobang集合中分数在50-100之间的前两位元素名称及分数
  43. zrangebyscore tuhaobang 50 100 withscores limit 0 2
  44. #按从大到小的顺序进行排序,并获取前2位
  45. zrevrangebyscore tuhaobang +inf -inf withscores limit 0 2
  46. #根据元素名删除元素
  47. zrem key member [member...]
  48. #获取集合中指定元素名称对应的索引
  49. zrank tuhaobang lisi
  50. #删除指定分数区间的元素[10,20],删除成功返回删除的个数,否则返回0
  51. zremrangebyscore tuhaobang 10 20
复制代码
4、通用命令


  • key相关
  1. #查找匹配规则的key, *:代表0到多个字符,?代表一个字符
  2. #查询所有key
  3. keys *
  4. #查询keys中第二个字母为a的key
  5. keys ?a*
  6. #判断key是否存在,存在:返回1,不存在:返回0
  7. exists key
  8. #删除key,删除成功返回1,删除不存在的key返回0
  9. del key
  10. #查看key剩余有效时间
  11. #ttl key
  12. ttl gender
  13. 结果:返回剩余有效时间,如果已经过期:返回-2,如果没有设置有效时间:返回-1
  14. #设置已经存在的key的过期时间,单位为秒
  15. expire key seconds
  16. #为已经存在的key设置过期时间,单位是毫秒
  17. pexpire key 毫秒
  18. #查看指定key的剩余存活时间,单位是毫秒
  19. pttl key
  20. #移除指定key的生存时间,永久的持久化
  21. persist key
  22. #获取指定的key的value的数据类型
  23. type key
  24. #移动当前数据库中对应的key到其他数据库,dbindex是0-15
  25. move key dbindex
复制代码

  • 数据库相关
  1. #redis默认有16个数据库,分别是 db0 - db15
  2. #查看当前数据库下有多少key
  3. dbsize
  4. #切换数据库,dbindex是0-15
  5. select dbindex
  6. #清空当前数据库
  7. flushdb
  8. #清空所有数据库中的数据
  9. flushall
  10. #实时监控Redis服务接收到的命令【其他客户端的操作,能够被监控到】
  11. monitor
复制代码

  • 查看redis读写性能
  1. #redis写的性能
  2. redis-benchmark set
  3. #redis读的性能
  4. redis-benchmark get
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表