我的快乐小窝 > 旧信息 >Redis的五种基本数据类型

Redis的五种基本数据类型

1、概述

  • Redis是一个由C语言开发的基于key-value形式的非关系型数据库key-value:键值对【键:String,值:五种数据类型】非关系数据库:NoSQL【Not Only SQL】关系型数据库:由二维表的形式来存储数据不是关系型数据库,就是非关系型数据库
  • 存储介质默认是内存可以持久化到磁盘上
  • 官网中文:http://www.redis.cn/
  • 英文:https://redis.io/

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

  • string:字符串
  • hash:对象
  • list:有序列表
  • set:无序集合
  • zset:有序集合

3、基本用法

1、string

set get getset mset mget

setnx strlen append incr incrby

decr decrby

#设置key和value,正确返回OKnset key valuenset name zhangsannn#获取key对应的value值,若没有返回nilnget keynget namenn#返回key对应的value,再重新设置这个key的值ngetset key valuengetset name lilynn#设置多个键值对 正确返回OKnmset k1 v1 k2 v2 ...nmset sex 1 age 20 address hznn#获取多对key对应的valuenmget k1 k2 k3 ...nmget sex age addressnn#设置key-value:如果key不存在,则设置,如果key存在,则什么都不做n#成功返回1,失败返回0nsetnx key valuensetnx phone 13577889900nn#计算key对应的value的长度nstrlen keynstrlen phonenn#在原先的基础之上进行字符串追加nappend key valuenappend address xsn#本来address的值是hz,现在就是hzxsnn#自增1,value是数值类型才能成功。如果key不存在,则直接以0为基础,进行自增。如果这个值不是数值,则会报错nincr keynincr agen#age本来是20,现在返回就是21nn#自增指定数量,value是数值类型才能成功nincrby age 5n#age本来是20,现在返回就是25nn#自减1,value是数值类型才能成功。ndecr keyndecr agen#age本来是0,现在返回就是-1nn#自减指定数量,value是数值类型才能成功ndecrby keyndecrby age 20n#age本来是30,现在返回就是10n

2、hash

hset hmset hget hmget hkeys

hvals hgetall hexists hlen hsetnx hdel

#设置值,必须指定大key和小key、valuenhset person name tomnn#设置多值nhmset person sex 1 age 20nn#获取单个小key对应的valuenhget person sexnn#获取多个小key对应的value们nhmget person name agenn#获取所有的小keynhkeys personnn#获取所有的小key对应的valuesnhvals personnn#获取所有大key中的键值对nhgetall personnn#判断小key是否存在nhexists person agenn#求大key中小key的数量nhlen personnn#设置小key【小key不存在,则设置成功,如果存在,则什么都不做】nhsetnx person age 25nn#删除nhdel person agen

3、list

  • 增加数据:两种方式左边增加数据:左压栈,后增加的数据在左边右边增加数据:右压栈,后增加的数据在右边
  • 读取数据读取数据从左往右

lpush rpush lrange llen lindex lpop rpop rpoplpush lrem

#左压栈nlpush key v1 v2 ...n#特征:存入的数据顺序跟读取顺序相反nn#右压栈nrpush key v1 v2 ...n#特征:存入的数据顺序跟读取顺序相同nn#查询列表中的数据n#下标从0开始,如果要读到最末尾,endIndex就是-1nlrange key startIndex endIndexnlrange key 0 -1nn#获取列表元素的个数nllen keynn#获取指定索引的元素,index表示索引nlindex key indexn#获取指定索引为3的元素nlindex key 3nn#从左边弹出一个元素[获取最左边的元素,再删除它]nlpop keynn#从右边弹出一个元素nrpop keynn#从一个列表的右边弹出元素,再追到加另一个列表的左边nrpoplpush 源列表 目标列表nn#移除count个的value值nlrem key count valuenlrem names 2 tomn#删除names列表中2个tom【是从左开始移除】n

4、set

sadd scard smembers sismember spop sdiff sinter sunion

sdiffstore sinterstore sunionstore smove

#存值nsadd myset aa bb ccn#返回存入的个数nn#获取集合长度nscard mysetnn#获取集合元素nsmembers mysetnn#判断元素是否在集合中。存在:返回1,不存在:返回0nsismember myset ccnn#随机弹出一个元素nspop mysetnn#随机弹出指定个数元素nspop myset 2nn#差集nsdiff myset1 myset2nn#交集nsinter myset1 myset2nn#并集nsunion myset1 myset2nn#将交集结果存入到另一个集合中n#sdiffstore 存储结果的集合名 操作的集合一 操作的集合二nsdiffstore myset3 myset1 myset2nn#将交集结果存入到另一个集合中nsinterstore myset4 myset1 myset2nn#将并集结果存入到另一个集合中nsunionstore myset5 myset1 myset2nn#将myset1中的aa元素移动到myset3nsmove myset1 myset3 aan

5、zset(sorted set)

zadd zcard zrange zincrby zscore zinterstore zrangebyscore zrevrangebyscore

zrem zrank zremrangebyscore

#向有序集合中增加元素n#zadd 集合名 分数1 名称1 分数2 名称2 ...nzadd tuhaobang 10 zhangsan 80 lisi 30 wangwun#返回插入的数量nn#获取集合中元素的数量nzcard tuhaobangnn#获取集合中指定区间的元素名称,如果后面的索引是-1,则返回所有元素名称nzrange tuhaobang 0 -1n1) "zhangsan"n2) "wangwu"n3) "lisi"nn#获取集合所有的元素,包括名称和分数【是从小到大排序】nzrange tuhaobang 0 -1 withscoresn1) "zhangsan"n2) "10"n3) "wangwu"n4) "30"n5) "lisi"n6) "80"nn#获取集合前两位元素的名称和分数nzrange tuhaobang 0 1 withscoresn1) "zhangsan"n2) "10"n3) "wangwu"n4) "30"nn#为集合中指定的名称的元素增加分数nzincrby tuhaobang 50 zhangsann#返回增加后的分数nn#返回集合中指定名称的分数nzscore tuhaobang wangwunn#把myzset1和myzset2根据元素名称求出交集,并把相同名称的value加在一起,得到元素名称的新分数,存入到新集合中,成功返回的是交集的个数n#zinterstore 目标集合 操作集合的数量 集合一 集合二 ...nZINTERSTORE myzset3 2 myzset1 myzset2nn#zrangebyscore 集合名称 小分数 大分数 [withscores] [limit 第几条开始显示 显示数量]n#在不知道当前集合中最大值和最小值的情况下,-inf代表最小值 +inf代表最大值n#获取tuhaobang集合中所有元素名称及分数nzrangebyscore tuhaobang -inf +inf withscoresn#获取tuhaobang集合中第一个元素名称及分数nzrangebyscore tuhaobang -inf +inf withscores limit 0 1n#获取tuhaobang集合中分数在50-100之间的所有元素名称及分数nzrangebyscore tuhaobang 50 100 withscoresn#获取tuhaobang集合中分数在50-100之间的前两位元素名称及分数nzrangebyscore tuhaobang 50 100 withscores limit 0 2nn#按从大到小的顺序进行排序,并获取前2位nzrevrangebyscore tuhaobang +inf -inf withscores limit 0 2nn#根据元素名删除元素nzrem key member [member...]nn#获取集合中指定元素名称对应的索引nzrank tuhaobang lisinn#删除指定分数区间的元素[10,20],删除成功返回删除的个数,否则返回0nzremrangebyscore tuhaobang 10 20n

4、通用命令

  • key相关

#查找匹配规则的key, *:代表0到多个字符,?代表一个字符n#查询所有keynkeys *n#查询keys中第二个字母为a的keynkeys ?a*nn#判断key是否存在,存在:返回1,不存在:返回0nexists keynn#删除key,删除成功返回1,删除不存在的key返回0ndel keynn#查看key剩余有效时间n#ttl keynttl gendern结果:返回剩余有效时间,如果已经过期:返回-2,如果没有设置有效时间:返回-1nn#设置已经存在的key的过期时间,单位为秒nexpire key secondsnn#为已经存在的key设置过期时间,单位是毫秒npexpire key 毫秒n#查看指定key的剩余存活时间,单位是毫秒npttl keynn#移除指定key的生存时间,永久的持久化npersist keynn#获取指定的key的value的数据类型ntype keynn#移动当前数据库中对应的key到其他数据库,dbindex是0-15nmove key dbindexn

  • 数据库相关

#redis默认有16个数据库,分别是 db0 - db15n#查看当前数据库下有多少keyndbsizenn#切换数据库,dbindex是0-15nselect dbindexnn#清空当前数据库nflushdbnn#清空所有数据库中的数据nflushallnn#实时监控Redis服务接收到的命令【其他客户端的操作,能够被监控到】nmonitorn

  • 查看redis读写性能

#redis写的性能nredis-benchmark setnn#redis读的性能nredis-benchmark get

本文来自网络,不代表本站立场,转载请注明出处:https://51.wxwx.cc/index.php?m=content&c=index&a=show&catid=392&id=199480

我的快乐小窝,知识百科

我的快乐小窝后续将为您提供丰富、全面的关于我的快乐小窝,知识百科内容,让您第一时间了解到关于我的快乐小窝,知识百科的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。