ICode9

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

Redis基本数据类型

2021-03-29 23:32:07  阅读:173  来源: 互联网

标签:基本 存储 set name zset 数据类型 Redis key 数据


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

标签:基本,存储,set,name,zset,数据类型,Redis,key,数据
来源: https://blog.csdn.net/W_ryxj000/article/details/115314321

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

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

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

ICode9版权所有