ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis-02-常用数据类型及命令

2022-02-21 22:02:24  阅读:217  来源: 互联网

标签:02 10 v1 数据类型 Redis v2 k2 k1 集合


说明

  • Redis-02-常用数据类型及命令
  • 假设你已经完成了上一节安装和常用配置
  • 官方文档:https://redis.io/documentation
  • Redis命令参考:http://redisdoc.com/

核心概念

》数据库命令

  • Redis解(刺)压(激)命令
    flushall    # 清空Redis服务器所有数据,使用需谨慎!!!
    flushdb     # 清空当前Redis库所有数据,使用需谨慎!!!
    
  • 常用命令
    select 1        # 切换到数据库1(默认0,可选0-15,也可以修改配置文件)
    dbsize          # 查看当前数据库k的数量
    keys *          # 查看当前数据库所有k
    exist k         # 查看k是否存在
    type k          # 查看k类型
    del k           # 删除k
    rename k k1     # 重命名k为k1
    remanenx k k1   # 重命名k为k1
    
    
  • 过期
    ttl k                       # 查看k过期时间
    expire k 10                 # 设置k过期时间为10秒
    expireat k 1355292000       # 设置k在固定时间过期
    persist k                   # 移除k的过期时间改为不过期
    pttl k                      # 查看k过期时间毫秒
    pexpire k 10                # 设置k过期时间为10毫秒
    pexpireat k 1555555555005   # 设置k在固定时间毫秒过期
    
    

》字符串String

  • 一个key对应一个value,二进制安全的,单个value最多512M
  • 常用命令
    set k v				# 设置k的值为v
    get k				# 获取k的值
    append k aa			# k的值后追加aa
    strlen k			# 获取k的值长度
    setnx k v			# 设置k的值为v(如果k不存在)
    incr k				# k的值(数字类型)++
    decr k				# k的值(数字类型)--
    incrby k 5			# k的值(数字类型)+5
    decrby k 5			# k的值(数字类型)-5
    mset k1 v1 k2 v2	# 设置多个k-v
    mget k1 k2			# 获取多个k的值
    msetnx k1 v1 k2 v2	# 设置多个k-v(如果都不存在)
    getrange k 0 3		# 获取k的值的第0~3个字符(全部:0 -1)
    setex k 60 v		# 设置值并且设置过期时间,单位秒
    getset k v			# 设置新值获取旧值
    
    

》队列List

  • list是一个双向链表,开头结尾效率高中间低
  • list数据存储形式
    • zipList:少量数据
    • QuickList:大量数据
  • 常用命令
    lpush/rpush k v1 v2 v3	# 向k左/右插入
    lpop/rpop k				# 从k左/右吐出一个值
    rpoplpush k1 k2			# k1右边一个值插入k2左边
    lrange k 0 -1			# 查看k的列表的所有值
    lindex k 3				# 获取k的索引3的值(左到右)
    llen k					# 获取k的列表长度
    linsert k befor v3 newv	# 在k的值为v3后面插入newv
    lrem k 3 vv				# 从k的左边删除3个值为vv的值
    lset k 3 v3				# 将k的索引为3的值替换为v3
    

》集合Set

  • 具备自动排重的list
  • Set是一个String类型的无序集合
  • 底层是一个value为null的hash表
  • 复杂度:O(1),数据增加查询速度不变
  • Set数据存储形式
    • dict字典,哈希表实现
  • 常用命令
    sadd k v1 v2	# 将v1、v2加入到集合k
    smembers k		# 取出k中所有值
    sismember k v 	# 判断k中是否有v
    scard k			# 返回k中元素个数
    srem k v2 v3	# 删除k中的值k2、k3
    spop k			# 从k中随机吐出一个值
    srandmember k 3	# 随机从k中取出3个值,不删除
    smove k1 k2 v	# 把v从集合k1移动到k2
    sinter k1 k2	# 返回k1、k2交集
    sunion k1 k2	# 返回k1、k2并集
    sdiff k1 k2		# 返回k1、k2差集
    
    

》哈希Hash

  • 是一个键值对集合,相当于:k = {“filed1”:“v1”,“filed2”:“v2”}
  • Hash数据存储形式
    • zipList:少量数据
    • QuickList:大量数据
  • 常用命令
    hset k f v			# 集合k中插入域f值为v
    hget k f			# 获取集合k中域f的值
    hmset k f1 v1 f2 v2	# 集合k中插入域f1值为v1、域f2值为v2
    hexists k f			# 判断集合k中域f是否存在
    hkeys k				# 列出集合k中所有的filed
    hvals k				# 列出集合k中所有的value
    hincrby k f 10		# 集合k中的域f增加10
    hsetnx k f v		# 集合k中域f值设置为v(如果f存在)
    

》有序集合Zset(sorted set)

  • 类似Set,没有重复元素的字符串集合
  • 每个元素绑定一个评分值:score,元素唯一但score可以重复
  • Zset数据存储形式
    • HashMap + 跳跃表
      • HashMap存储形式相当于:k = {“v1”:“score1”,“v2”:“score2”}
      • 跳跃表存储score,跳跃表查询效率远高于有序链表
  • 常用命令
    zadd k 1 v1 2 v2											# 向有序集k中插入v1、v2,score分别为1、2
    zrange k 0 -1 [withscores]									# 返回有序集k中下标0~-1之间的元素
    zrangebyscore k 10 20 [withscores] [limit offset count]		# 返回有序集k中score介于10和20的元素,按score递增
    zrevrangebyscore k 10 20 [withscores] [limit offset count]	# 同上,按score递减
    zincrby k 10 v												# 为有序集k中的值v的score加10
    zrem k v													# 删除有序集k中值为v的元素
    zcount k 10 20												# 统计有序集k中score位于10~20的元素个数
    zrank k v													# 返回值k在有序集k中的排名,从0开始
    
    

标签:02,10,v1,数据类型,Redis,v2,k2,k1,集合
来源: https://blog.csdn.net/csdn_yasin/article/details/123057053

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有