Redis基本数据类型

Redis数据类型

#查找错误日志
$ docker logs myredis 
#使用docker开启容器后,进入容器执行redis客户端
$ docker exec -it myredis redis-cli
#开启容器后,进入redis-benchmark 是一个压力测试工具  进行测试
$ docker exec -ti  24d68d(容器id) redis-benchmark

image-20210314151448459

数据存储类型

存储类型代表
字符串类型string
列表类型list
散列类型hash
集合类型set
有序集合类型sorted_set

字符串类型 string

  • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型;
  • 存储数据的格式:一个存储空间保存一个数据;
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用;
# 添加/修改数据 set key value
$ set name wmj
# 获取数据 get key
$ get name
# 判断当前的key是否存在
$ exists name
# 设置key的过期时间,单位是秒
$ expire name 20
# 查看当前key的剩余时间
$ ttl name
# 查看当前key的一个类型!
$ type age
# 删除数据 del key
$ del name
# 添加/修改多个数据 mset key1 value1 key2 value2 …  Multiple
$ mset age 10 address 河南
# 获取多个数据 mget key1 key2 …
$ mget age address
# 获取数据字符个数(字符串长度)strlen key
$ strlen name
# 追加信息到原始信息后部(如果原始信息存在就追加,否则新建) append key value
$ append name pf
###################################### 
#  设置数值数据增加指定范围的值  incr key 执行原子的加1操作
$ set number 5
# 5+1   自增1  
$ incr number
# incrby key increment 将key对应的数字加decrement  
# 6+4  设置步长  指定增量
$ incrby number 4
# incrbyfloat key increment  指定浮点数key来增长浮点数(存放于string中)的值
# 10+0.1
$ incrbyfloat number 0.1
# 设置数值数据减少指定范围的值 
# decr key
# decrby key increment
$ set number1 5
$ decr number1
$ decrby number1 3
###################################### 
# 字符串范围 range  获取name 从0到2  共3位
$ getrange name 0 2
# 替换 从1的位置开始替换  wmj -->  wmm
$ setrange name 1 ww 
###################################### 
# setex (set with expire) 设置过期时间 
# setnx (set if not exist) 如果不存在则设置 存在则设置失败 (在分布式锁中会常常使用!)
# 设置过期时间  key1 20秒后过期
$ setex key1 20 "hello"  
# 如果不存在student 则设置为1001 存在则设置失败 
$ setnx student 1001
# 使用redis实现分布式锁
https://www.jianshu.com/p/c970cc71070b
$ getset db redis
null
$ getset db mysql
"redis"
运行结果
  • string 类型数据操作的注意事项

    • 数据操作不成功的反馈与数据正常操作之间的差异

      ① 表示运行结果是否成功

      • (integer) 0 → false 失败
      • (integer) 1 → true 成功

      ② 表示运行结果值

      • (integer) 3 → 3 3个

      • (integer) 1 → 1 1个

    • 数据未获取到

      • (nil)等同于null
    • 数据最大存储量

      • 512MB
    • 数值计算最大范围(java中的long的最大值)

      • 9223372036854775807

list类型

  • 数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
  • 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
  • list类型:保存多个数据,底层使用双向链表存储结构实现
# 添加/修改数据
# lpush key value1 [value2] ……  由左向右进  后入的在头部  
# rpush key value1 [value2] ……  由尾部一个一个进去   后入的在最后
$ lpush mylist a b c
$ lrange mylist 0 -1
$ rpush mylist d e f
# 结果  "c" "b" "a" "hello" "world" "d" "e" "f"
# 获取数据  
# lrange key start stop   
# lindex key index  根据索引取值  0-列表的长度   最后一个是-1  以此类推
# llen key 得到长度
$ lindex mylist 0
$ llen mylist
# 获取并移除数据 
# lpop key  获取列表第一个数据并移除 左到右
# rpop key  最后一个数据并移除
$ lpop mylist
$ rpop mylist
# 规定时间内获取并移除数据
# blpop key1 [key2] timeout
# brpop key1 [key2] timeout
# brpoplpush source destination timeout
# 移除指定数据
# lrem key count value
$ lrem mylist 1 d
$ lrem mylist -1 a 

set 类型

  • 新的存储需求:存储大量的数据,在查询方面提供更高的效率
  • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
  • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。
#添加数据 添加一个或多个指定的member元素到集合的 key中  sadd key member1 [member2]
$ sadd myset hello world
#获取全部数据 smembers key 
$ smembers myset
#删除数据 srem key member1 [member2]
$ sadd myset one two three
$ srem myset one
#获取集合数据总量 scard key
$ scard myset
#判断集合中是否包含指定数据 sismember key member
$ sismember myset two
#随机获取集合中指定数量的数据 srandmember key [count]
#随机返回一个
$ srandmember myset
#返回指定数量的值
$ srandmember myset 4
#随机获取集合中的某个数据并将该数据移出集合 spop key [count]
$ spop myset
#将一个指定的值,移动到另外一个set集合! 将myset集合中的hello值移到myset2集合中
$ smove myset myset2 hello

#set 类型数据的扩展操作
#求两个集合的交、并、差集
#sinter key1 [key2] 
$ sadd set1  a b c
$ sadd set2 b c d
$ sinter set1 set2
#sunion key1 [key2]
$ sunion set1 set2
#sdiff key1 [key2]
$ sdiff set1 set2
#求两个集合的交、并、差集并存储到指定集合中 
#sinterstore destination key1 [key2]   存到deinter
$ sinterstore deinter set1 set2
#sunionstore destination key1 [key2] 
$ sunionstore deunion set1 set2
#sdiffstore destination key1 [key2] 
$ sdiffstore dediff set1 set2
$ smembers deinter
$ smembers deunion
$ smembers dediff
#将指定数据从原始集合中移动到目标集合中 smove source destination member
$ sadd set3 0ne two
$ sadd set4 three
$ smove set3 set4 two

hash 类型

  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
  • 需要的存储结构:一个存储空间保存多个键值对数据
  • hash类型:底层使用哈希表结构实现数据存储
# 添加/修改数据 hset key field value
$ hset people name wmj
$ hset people age 24
# 获取数据 hget key field
# hgetall key
$ hget people name
$ hgetall people
# 删除数据 hdel key field1 [field2]
$ hdel people sex
# 添加/修改多个数据 hmset key field1 value1 field2 value2 … 
$ hmset student id 1001 name zhangsan age 18
# 获取多个数据 hmget key field1 field2 … 
$ hmget student id name age
# 获取哈希表中字段的数量 hlen key
$ hlen student
# 获取哈希表中是否存在指定的字段 hexists key field
$ hexists student age
# 获取哈希表中所有的字段名或字段值  hkeys key  hvals key
$ hkeys student
$ hvals student
# 设置指定字段的数值数据增加指定范围的值 
# hincrby key field increment    hincrbyfloat key field increment
$ hincrby people age 2

sorted_set 类型

  • 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
  • 需要的存储结构:新的存储模型,可以保存可排序的数据
  • sorted_set类型:在set的存储结构基础上添加可排序字段
#添加数据 zadd key score1 member1 [score2 member2]
$ zadd zset 1 one
$ zadd zset 1 uno
$ zadd zset 2 two
$ zadd zset 3 three
#获取全部数据 zrange key start stop [WITHSCORES]
$ zrange zset 0 -1 withscores
#zrevrange key start stop [WITHSCORES]  按递减的方式进行排列
$ zrevrange zset 0 -1 withscores
#删除数据 zrem key member [member ...]
$ zrem zset uno
#按条件获取数据 
#zrangebyscore key min max [WITHSCORES] [LIMIT]
$ zrangebyscore zset 1 2 
#zrevrangebyscore key max min [WITHSCORES]
$ zrevrangebyscore zset 2 1
#条件删除数据
#zremrangebyrank key start stop 按照索引
$ zadd zset 4 four 5 five 6 six 7 seven
$ zrange zset 0 -1 withscores
#删除第6位和第7位  索引从0开始  要删除第6位和7位 写5-6 
$ zremrangebyrank zset 5 6
#zremrangebyscore key min max  score值介于min和max之间
$ zremrangebyscore zset 4 5
#获取集合数据总量
#zcard key 返回key的有序集元素个数。
$ zcard zset
#zcount key min max 返回有序集key中,score值在min和max之间(默认包括score值等于min或max)
$ zcount zset 1 3
#集合交、并操作
#zinterstore destination numkeys key [key ...]  numkeys:key的个数
#zunionstore destination numkeys key [key ...]
#获取数据对应的索引(排名)
#zrank key member 拿到数据为one的排名
$ zrank zset one
#zrevrank key member  返回有序集key中成员member的排名,其中有序集成员按score值从大到小排列。排名以0为底,也就是说,score值最大的成员排名为0。
$ zrevrank zset one
#score值获取与修改
#zscore key member  返回有序集key中,成员member的score值
$ zscore zset one
#zincrby key increment member 为有序集key的成员member的score值加上增量increment。
$ zincrby zset 2 one
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值