redis的五大数据类型

redis的五大数据类型

		1.  String
		2.  set
key +	3.  list
		4.  hash
		5.  zset

先看看一些常见的操作命令:
select index 切换数据库,redis默认有16个数据库0~15

dbsize 查看当前数据库的key的数量

flushdb 清空单个数据库
flushall 清空全部数据库

1. String类型

String类型是二进制安全的。意味着Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。

String类型是Redis最基本的数据类型,一个Redis中字符串value最大可以是512M。

原子性:
Redis单命令的原子性主要得益于Redis的单线程

命令说明示例
set添加k-vset name admin
get根据key获取valueget name
strlen获取value的长度strlen name
exists判断key是否存在exists name,返回1:存在,0:不存在
del删除key(可以删除多个)del name
keys查询符合条件的keykeys * :查询redis中的全部key,keys n?me 使用占位符,keys name* 获取以name开头的数据
mset设置多个k-vmset k1 v1 k2 v2
mget获取多个key的值mget k1 k2
append对某个key的value进行追加append key value
type检查某个key的类型type key
incr自动加1incr key
decr自动减1decr key
incrby指定数值加incrby key 10
decrby指定数值减decrby key 10
expire指定key的生效时间expire key 20,key20秒后失效
ttl检查key的剩余存活时间ttl key(-1:永不过期,-2:已过期)
persist撤销key的过期时间persist key
setnxset if not exists 当key不存在设置成功0:不成功,1:成功
msetnx设置多组k-v,当且仅当key都不存在时设置成功有一个key已存在都执行不成功
getrange key <起始位置> <结束位置>获取value的截取字符串,类似于substring但是包含了头和尾例如:set key 01234,执行:getrange key 0 3,得到:0123
setrange key <起始位置> <值>从value的某个位置开始设值例如:set key 01234,执行:setrange key 1 hhh,得到:0hhh4
setex key <过期时间> <值>设置k-v的同时设置过期时间,单位:秒setex a 20 a
getset设置新值的同时获取旧值getset a 01234,返回了之前的旧值

2. hash类型

说明:可以用散列类型保存对象和属性值
例子:User对象{id:2,name:小明,age:19}

命令说明示例
hset添加数据hset key field value
hget获取对象属性值hget key field
hexists判断对象属性是否存在hexists key field 1:存在,0:不存在.
hdel删除对象属性hdel user field[field…]
hgetall获取hash中全部元素和值hgetall user
hkeys获取hash中的所有字段hkeys user
hlen获取hash中所有属性的数量hlen user
hmget获取指定属性值hmget key field[field…]
hmset设置多个属性和值hmset key field value [field value …]
hsetnx当字段不存在时设置成功hsetnx key field value
hvals获取哈市的所有值hvals user
hincrby <键> <属性> <值>将指定的field的值加上valuehincrby user age -7

3. list类型

说明:redis中的list集合是双端循环列表,分别可以从左右两个方向插入数据

list集合可以当作队列使用,也可以当作栈使用

命令说明示例
lpush从队列的左边入队一个或多个元素lpush key value [value…]
rpush从队列的右边入队一个或多个元素rpush key value [value…]
lpop从队列的左端弹出一个元素lpop key
rpop从队列的右端弹出一个元素rpop key
lpushx当队列存在时,从队列左侧入队一个元素lpushx key value
rpushx当队列存在时,从队列右侧入队一个元素rpushx key value
lrange从队列中返回指定的元素lrange key start stop,例如:lrange key 0 -1,获取全部队列元素
lrem key < count > < value>从存于key’的队列中移除前count次出现的值为value的元素 ,count>0:从头往尾移除值为value的元素(左->右);count<0:从尾往头移除值为value的元素(右->左);count=0:移除所有值为value的元素如:100010001,执行:lrem key 2 0,得到:1010001,再执行:lrem key -2 0,得到:10101,lrem key 0 0,得到:111.需要注意的是,如果list里没有存在key就会被当作空list处理,这个命令会返回0
lset设置index位置的元素为valuelset key index value
lindex按照下标获取元素如:lpush l2 0 1 2,执行:lindex l2 1,得到:1
llen获取列表长度llen key
linsertt < key> befor/after < value> < newValue>在value左/右边插入newValue如:0 1 2,执行:linsert l3 before 1 -1,得到:0 -1 1 2,再执行:linsert l3 after 1 -1,得到:0 -1 1 -1 2

4. set类型

Redis的set对外提供的功能与list相似,是一个列表功能,特殊之处在于set是可以自动排重的

当需要存储一个列表又不希望出现重复数据时,set是一个很好的选择

并且set提供了判断某个成员是否在一个set集合内的重要接口

Redis的set时String类型的无序集合.底层是一个value为null的hash表,所以添加查找复杂度都是O(1)

命令说明示例
sadd < key> < value1> < value2>…将一个或多个member元素加入到key中,已经存在于集合的member元素将被忽略sadd set1 a b c d e
smembers < key>取出该集合的所有值smembers set1
sismember < key> < value>判断集合key是否含有该value1:有,0:没有
scard返回集合元素个数scard set1
srem < key> < value1> …删除集合中的某个元素srem set1 b e
spop < key> < n>随机从集合突出n个元素(会删除),不写默认为1spop key [count]
srandmember < key> < n>随机从集合突出n个元素(不会删除)srandmember set1 3
sinter < key1> < key2>返回交集元素
sunin < key1> < key2>返回并集元素
sdiff < key1> < key2>返回差集元素如set1: a b c ;set2 : a b c d e,执行sdiff set1 set2,结果:空,而执行sdiff set2 set1 ,结果:d e

5. zset类型(sorted set)

Redis有序集合zset与普通集合非常相似,是一个没有重复元素的字符串集合.

不同的是zset的每个成员都关联了一个评分(score),这个评分被用来按照从最低分到最高分的方式排序几个中的元素.

集合中的元素是唯一的,但是评分可以重复.

因为元素是有序的,所以可以很快地根据评分或者次序来获取一个范围的元素.访问有序集合的中间元素是很快的,因此你能够使用zset作为一个没有重复元素的智能列表

命令说明示例
zadd < key> < score1> < v1> …将一个或多个元素及其score值存入zadd zset1 0 a 1 b 2 c
zrange < key> < start> < stop> [WITHSCORES]返回下表从start到stop的元素,如果有withscores,连带score一起返回zrange zset1 1 3 withscores
zrangebyscore < key> < min> < max> [withscores] [limit offset count]返回有序集合key中,所有score值介于min和max之间(含头尾)的成员.从小到大排序zrangebyscore zset1 1 3
zrevrangebyscore < key> < max> < min> [withscores] [limit offset count]同上,从大到小排序
zincrby < key> < increment> < value>为元素member的score加上增量incrementzincrby zset1 2 a

6. 结束语

再写这篇博客的时候翻开以前的笔记,感觉跟新知识一样==,好多命令都记不清了.勤加练习,多多益善.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值