redis的数据类型和指令
本文内容纲要:
-1.全局key操作
-2.String(字符串)
-3.Hashes类型:(map<string,string>)
-4.List类型
-5.set类型
-6.Sorted-Sets类型
1.全局key操作
测试指令:
全局key操作命令:忽略与key关联的value的类型
删
flushdb清空当前选择的数据库
delmykeymykey2删除了两个Keys
改
movemysetkey1将当前数据库中的mysetkey键移入到ID为1的数据库中
renamemykeymykey1将mykey改名为mykey1
renamenxoldkeynewkey如果newkey已经存在,则无效
expiremykey100将该键的超时设置为100秒
persistmykey将该Key的超时去掉,变成持久化的键
查
keysmy*获取当前数据库中所有以my开头的key
existsmykey若不存在,返回0;存在返回1
select0打开ID为0的数据库
ttlmykey查看存货时间还剩下多少秒
typemykey返回mykey对应的值的类型
randomkey返回数据库中的任意键
2.String(字符串)
string是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
测试指令的过程就不贴出来了,下面是测试的指令
增
setmykey"test"为键设置新值,并覆盖原有值
getsetmycounter0设置值,取值同时进行
setexmykey10"hello"设置指定Key的过期时间为10秒,在存活时间可以获取value
setnxmykey"hello"若该键不存在,则为键设置新值
msetkey3"stephen"key4"liu"批量设置键
删
delmykey删除已有键
改
appendmykey"hello"若该键并不存在,返回当前Value的长度
该键已经存在,返回追加后Value的长度
incrmykey值增加1,若该key不存在,创建key,初始值设为0,增加后结果为1
decrbymykey5值减少5
setrangemykey20dd把第21和22个字节,替换为dd,超过value长度,自动补0
查
existsmykey判断该键是否存在,存在返回1,否则返回0
getmykey获取Key对应的value
strlenmykey获取指定Key的字符长度
ttlmykey查看一下指定Key的剩余存活时间(秒数)
getrangemykey120获取第2到第20个字节,若20超过value长度,则截取第2个和后面所有的的
mgetkey3key4批量获取键
3.Hashes类型:(map<string,string>)
我们可以将Redis中的Hashes类型看成具有StringKey和StringValue的map容器。
所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。
每一个Hash可以存储4294967295个键值对。
测试指令:
案例解释:
Map类型:
hsetmyhashfield1"s"
redis.key=myhashredis.value=(map.key=field1map.value=s)
增
hsetmyhashfield1"s"若字段field1不存在,创建该键及与其关联的Hashes,Hashes中,key为field1,并设value为s,若字段field1存在,则无效
hsetnxmyhashfield1s若字段field1不存在,创建该键及与其关联的Hashes,Hashes中,key为field1,并设value为s,若字段field1存在,则无效
hmsetmyhashfield1"hello"field2"world一次性设置多个字段
删
hdelmyhashfield1删除myhash键中字段名为field1的字段
delmyhash删除键
改
hincrbymyhashfield1给field的值加1
查
hgetmyhashfield1获取键值为myhash,字段为field1的值
hlenmyhash获取myhash键的字段数量
hexistsmyhashfield1判断myhash键中是否存在字段名为field1的字段
hmgetmyhashfield1field2field3一次性获取多个字段
hgetallmyhash返回myhash键的所有字段及其值
hkeysmyhash获取myhash键中所有字段的名字
hvalsmyhash获取myhash键中所有字段的值
4.List类型
List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。
List中可以包含的最大元素数量是4294967295。
测试指令:
List类型:(链表:最后一个插入的元素,位置索引为o)
增
lpushmykeyab若key不存在,创建该键及与其关联的List,依次插入a,b,若List类型的key存在,则插入value中
lpushxmykey2e若key不存在,此命令无效,若key存在,则插入value中
linsertmykeybeforeaa1在a的前面插入新元素a1
linsertmykeyafteree2在e的后面插入新元素e2
rpushmykeyab在链表尾部先插入b,在插入a
rpushxmykeye若key存在,在尾部插入e,若key不存在,则无效
rpoplpushmykeymykey2将mykey的尾部元素弹出,再插入到mykey2的头部(原子性的操作)
删
delmykey删除已有键
lremmykey2a从头部开始找,按先后顺序,值为a的元素,删除数量为2个,若存在第3个,则不删除
ltrimmykey02从头开始,索引为0,1,2的3个元素,其余全部删除
改
lsetmykey1e从头开始,将索引为1的元素值,设置为新值e,若索引越界,则返回错误信息
rpoplpushmykeymykey将mykey中的尾部元素移到其头部
查
lrangemykey0-1取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。
lrangemykey02从头开始,取索引为0,1,2的元素
lrangemykey00从头开始,取第一个元素,从第0个开始,到第0个结束
lpopmykey获取头部元素,并且弹出头部元素,出栈
lindexmykey6从头开始,获取索引为6的元素若下标越界,则返回nil
5.set类型
Set类型看作为没有排序的字符集合。Set可包含的最大元素数量是4294967295。
如果多次添加相同元素,Set中将仅保留该元素的一份拷贝。
测试指令:
增
saddmysetabc若key不存在,创建该键及与其关联的set,依次插入a,b,若key存在,则插入value中,若a在myset中已经存在,则插入了d和e两个新成员。
删
spopmyset尾部的b被移出,事实上b并不是之前插入的第一个或最后一个成员
sremmysetadf若f不存在,移出a、d,并返回2
改
smovemysetmyset2a将a从myset移到myset2,
查
sismembermyseta判断a是否已经存在,返回值为1表示存在。
smembersmyset查看set中的内容
scardmyset获取Set集合中元素的数量
srandmembermyset随机的返回某一成员
sdiffmyset1myset2myset31和2得到一个结果,拿这个集合和3比较,获得每个独有的值
sdiffstorediffkeymysetmyset2myset33个集和比较,获取独有的元素,并存入diffkey关联的Set中
sintermysetmyset2myset3获得3个集合中都有的元素
sinterstoreinterkeymysetmyset2myset3把交集存入interkey关联的Set中
sunionmysetmyset2myset3获取3个集合中的成员的并集
sunionstoreunionkeymysetmyset2myset3把并集存入unionkey关联的Set中
6.Sorted-Sets类型
Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。成员是唯一的,但是分数(score)却是可以重复的。
测试指令:
分数:按分数高低排序
位置索引:分数最低的索引为0
增
zaddmyzset2"two"3"three"添加两个分数分别是2和3的两个成员
删
zremmyzsetonetwo删除多个成员变量,返回删除的数量
改
zincrbymyzset2one将成员one的分数增加2,并返回该成员更新后的分数
查
zrangemyzset0-1WITHSCORES返回所有成员和分数,不加WITHSCORES,只返回成员
zrankmyzsetone获取成员one在Sorted-Set中的位置索引值。0表示第一个位置
zcardmyzset获取myzset键中成员的数量
zcountmyzset12获取分数满足表达式1<=score<=2的成员的数量
zscoremyzsetthree获取成员three的分数
zrangebyscoremyzset(12获取分数满足表达式1<score<=2的成员
#-inf表示第一个成员,+inf最后一个成员
#limit限制关键字
#23是索引号
zrangebyscoremyzset-inf+inflimit23返回索引是2和3的成员
zremrangebyscoremyzset12删除分数1<=score<=2的成员,并返回实际删除的数量
zremrangebyrankmyzset01删除位置索引满足表达式0<=rank<=1的成员
zrevrangemyzset0-1WITHSCORES按位置索引从高到低,获取所有成员和分数
#原始成员:位置索引从小到大
one0
two1
#执行顺序:把索引反转
位置索引:从大到小
one1
two0
#输出结果:two
one
zrevrangemyzset13获取位置索引,为1,2,3的成员
#相反的顺序:从高到低的顺序
zrevrangebyscoremyzset30获取分数3>=score>=0的成员并以相反的顺序输出
zrevrangebyscoremyzset40limit12获取索引是1和2的成员,并反转位置索引
,
本文内容总结:1.全局key操作,2.String(字符串),3.Hashes类型:(map<string,string>),4.List类型,5.set类型,6.Sorted-Sets类型,
原文链接:https://www.cnblogs.com/liuconglin/p/5847568.html