Redis的五种基本数据类型
Redis是key-value型的数据库,有五种基本的数据类型,分别是String,Hash,List,Set,Zset; key都是字符串类型的,数据类型对应的是value
String类型:
最基本的key-value
#添加,修改数据 key相同就是修改
set key value
#根据key获取数据
get key
#根据key删除数据
del key
#判断性添加数据,如果数据的key存在就添加失败
setnx key value
#一次添加多个数据
mset key1 value1 key2 value2...
#一次获取多个数据
mget key1 key2 key3...
#获取该value的长度
strlen key...
#如果原始信息存在就加上,不存在就新建
append key value
#对该key的value值递增+1
incr key
#对该key的value值指定加多少
incrby key increment
#对该key的value值-1
decr key
#对该key的value值指定减多少
decrby key increment
#设置该数据的过期时间,单位:秒
setex key seconds value
#设置该数据的过期时间,单位:毫秒
psetex key milliseconds value
hash类型 :
key – field value类型,其实就是key-map类型,field就是map的key
#添加或者修改数据
hset key field value
#根据key获取数据,获取的是value值
hget key field
#获取该key的所有数据,获取的是那个map
hget key
#判断性添加数据,如果该数据的key已经存在,就添加失败
hsetnx key field value
#删除数据
hdel key field1 field2...
#一次添加多个数据
hmset key field1 value1 field2 value2 field3 value3...
#一次获取多个数据
hmget key field1 fiedld2...
#获取该key对应的map大小,就是map中有几个键值对
hlen key
#获取map中的所有的key
hkeys key
#获取map中所有的value
hvals key
#设定指定的value增加指定范围的值
hincrby key field increment
#也是增加指定范围的值
hincrbyfloat key field increment
list类型:
key-list,list类型具有索引的概念,有索引概念
#从左边添加数据
lpush key value1 value2...
#从右边添加数据
rpush key value1 value2...
#指定位置获取数据,start是开始的索引,stop是结束索引,0,-1的话就是取出全部数据,从左到右数
lrange key start stop
#根据索引获取数据
lindex key index
#获取该key对应的list长度
llen key
#从左边开始获取并移除数据,只会取一个
lpop key
#从右边开始获取并移除数据,只会取一个
rpop key
#删除指定数据多少个 count是个数,比如list中有5个b,我可以只删2个b,还有三个b
lrem key count value
#获取数据,指定时间内没拿到,就返回空,下面两个都是这个功能,分左右的区别
blpop key1 [key2] timeout
brpop key1 [key2] timeout
#取出source中的数据放到destination中
brpoplpush source destination timeout
set类型
key–set类型,set类型的value值不能重复,而且是无序的
#添加数据 member就是value,我反正是这么理解的...
sadd key member1 member
#获取全部数据根据key
smembers key
#删除数据
srem key member1 member2
#获取集合数据总量
scard key
#判断集合中是否包含指定数据
sismember key member
#随机获取集合中指定数量的数据,就是从里面随便挑count个
srandmember key count
#随机获取集合中数据并将该数据移出集合,跟上面的区别就是会删除
spop key count
#求两个集合的交、并、差集
sinter key1 key2 …
sunion key1 key2 …
sdiff key1 key2 …
#求两个集合的交、并、差集并存储到指定集合中
sinterstore destination key1 key2 …
sunionstore destination key1 key2 …
sdiffstore destination key1 key2 …
#将指定数据从原始集合中移动到目标集合中
smove source destination member
还有一个zset也就是sorted set,与set的区别就是他是有序的,听说用的少就不列举了
当时学习的时候脑子秀逗了,很久没有转过圈来。所以用可视化工具看了一下他们在redis中到底是怎么存的,可视化工具是RedisDesktop
String类型,左边框的testString是key,右边的s1是value Hash类型:能很清晰的看到他是key-map类型的。适合存对象 List类型:list类型的value可以重复
Set类型:value不能重复,而且最关键的他是无序的,我存的时候是1234这样的顺序
总结
redis的五种基本类型的命令都差不多,但是list类型可以从左从右添加数据,set可以求交集,并集,差集,对于操作redis存取数据的命令不用去记,用java的代码去操作,比如Jedis,SpringData Redis,Lettuce,并且spring中对这些进行了高度的封装
|