一位爱好技术的橘右京的哥哥橘左京
Redis——五大数据类型及基础知识(一)
Redis
Redis是基于内存以key-value形式存储的非关系数据库,value支持String、list、set、zset、hash多种数据类型,字符串value最大为512MB,每一种数据类型都提供了不同的方法。具有持久化、过期时间、事务、哨兵等功能。
1.Redis命令
通用
1)keys * / keys XX*:查询所有key 或 匹配某前缀
2)flushall:清空所有key
3)clear:dos窗口清屏
1.1 常用String命令
1)mset:批量新增
2)mget:批量获取
3)append:字符串拼接
append key ‘XXX’
4)getrange:指定区间截取并获取 -1代表到最后
getrange key 0 5
5)setrange:指定索引替换值
setrange key 0 ‘J’
6)strlen:获取长度,中文字符会根据编码影响长度,单个字UTF-8占3个,GBK占两个
strlen key
7)NX/XX:
set key value NX|XX
①NX命令是当key不存在时,set才可生效;
②XX命令是当key存在时,set才可生效;
1.2 常用List命令
1)lpush/rpush:将value从左/从右依次写入
lpush key value1 value2 value3
2)lpop/rpop:将value从左/从右依次取出并删除元素
lpop key
3)lrange:将list值按照索引值顺序取(支持正反向索引)
lrange key 0 -1
4)lindex:将list值按照索引取值
lindex key -1
5)lset:替换list某索引的value(支持正反向索引)
lset key 索引值 value
6)linsert:在list的某个元素之前/之后插入元素
linsert key before/after pivot value
7)lrem:按次序删除list中几个名为XX的元素(支持正反向索引)
lrem key count value
8)ltrim:删除不在指定区间内的数据
ltrim key 1 -2
1.3 常用Hash命令
1)hset:单个写入数据
hset key name value
2)hget:单个获取数据
hget key name
3)hkeys:获取Key下Hash中所有的Key
hkeys key
4)hvals:获取Key下Hash中所有的Value
hvals key
5)hgetAll:获取Key下Hsah中所有Key Value
hgetAll key
6)hmset:批量写入数据
hmset key name1 value1 name2 value2 name3 value3
7)hmget:批量获取数据
hmget key name1 name2 name3
8)hincrby / hincrbyfloat:对Hash中数值类型Value执行计算
hincrbyfloat key field 值
1.4 常用Set命令
1)sadd:写入数据
sadd key value1 value2 value3
2)smembers:获取元素
smembers key
3)sinter:获取多个集合的交集
sinter key1 key2
4)sinterstore:获取多个集合的交集并赋值给一个key
sinterstore destination key1 key2
5)sunion:获取并集
sunion key1 key2
6)sdiff:获取差集
sdiff key1 key2
7)srandmember:随机获取集合中的元素
srandmember key count
①count为正数,取出元素若超出集合元素数量,不可重复取值,最多取出集合最大个数
②count为负数,取出元素若超出集合元素数量,可重复取值
8)spop:取出一个值并删除
hincrbyfloat key field
9)spop:取出一个值并删除
hincrbyfloat key field 值
1.5 常用Sorted set命令
1)zadd:写入数据
zadd key score1 value1 score2 value2
2)zrange:获取member / 获取score及member
zrange key 起始索引 结束索引
zrange key 起始索引 结束索引 withscores
3)zrevrange:倒叙获取member / 倒叙获取socre及member
zrevrange key 起始索引 结束索引
zrevrange key 起始索引 结束索引 withscores
4)zrangbyscore:根据socre获取起止分数内的member/score及member
zrangebyscore key 19 22
zrangebyscore key 19 22 withscores
5)zsore:根据member取出socre
zscore key member
6)zrank:根据member获取排名
zrank key member
7)zincrby:针对socre计算
zincrby key increment member
8)zunionstore:求多个key并集
zunionstore destination numkey key1 key2 :重复的member的score值相加
zunionstore destination numkey key1 key2 weights 1 0.5:赋0.5权重的key中score值/2操作,再与重复的相加
zunionstore destination numkey key1 key2 aggregate max:求并集并且取score最大值
总结
Redis提供了五大数据类型,解决了不同场景下数据的存储,在开发中要利用合理利用不同的数据格式,能够最大程度上节省内存空间,提升效率,