栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis 数据类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis 数据类型

数据类型:

字符串(strings) :字符存储

存值:set k v、redisTemplate.opsForValue().set("k",v);取值:get k、redisTemplate.opsForValue().get("k");批量 mset k4 v4 k5 v6 、 redisTemplate.opsForValue().multiSet(map);递加:(数值型字符)incr k、 redisTemplate.opsForValue().increment("k")递减:decr key、redisTemplate.opsForValue().decrement("k")不存在则设值:setnx k v 、redisTemplate.opsForValue().setIfAbsent("k1",2,Duration.ofSeconds(30));存在k,才设值: redisTemplate.opsForValue().setIfPresent("k2",3);设置key,并设置过期时间(秒): setex k 10 1设置key,过期时间:expire key 30 、 redisTemplate.expire("k2",Duration.ofSeconds(30));查询key :keys PATTERN,如 keys k* 、redisTemplate.keys("k*")拼接value: APPEND key value 、redisTemplate.opsForValue().append("a3", "b") ;返回拼接后字符长度

string- 位图(bitmap) :对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)

存储:setbit key 1 1 、redisTemplate.opsForValue().setBit("key",1,true)0 1 0 0 0 0 0 0 ;一个字符8字节,默认8个二进制位.取值: getbit key 1 、redisTemplate.opsForValue().getBit("key", 1)统计:bitcount key 、(long) redisTemplate.execute((RedisCallback) e -> e.bitCount(key.getBytes()))场景:适用只有两种状态的业务统计

散列(hash) : 对象存储

存值: hmset 小树 age 10 sex 1、redisTemplate.opsForHash().put("小树","age",10)取值: hmget 小树 age 、redisTemplate.opsForHash().get("小树", "age")获取属性-值:HGETALL key、redisTemplate.opsForHash().entries("key");属性递增: HINCRBY 小树 age 5 、 redisTemplate.opsForHash().increment("小树","age",5L);

列表(list)队列 :根据插入顺序排序的,可重复的数据列表,头部插入、尾部插入

存值: LPUSH key 1 2 3 、redisTemplate.opsForList().leftPushAll("list",1,2,3,4,5);
– rpush key 1 2 3 、 redisTemplate.opsForList().rightPushAll("list",5,4,3,2,1);获取全部:LRANGE key 0 -1 、redisTemplate.opsForList().range("key", 0, -1);弹出:redisTemplate.opsForList().leftPop("key", Duration.ofSeconds(10));分页:

		int start = (page - 1) * size;
        int end = start + size-1;
        List list = redisTemplate.opsForList().range("list", start, end);
 

集合(sets):不重复的无序集合,元素member

存值: sadd k 1 2 3 、 redisTemplate.opsForSet().add("k",1,2,3,4,5,"a","b");取值:SMEMBERS k 、 redisTemplate.opsForSet().members("k");差集:sdiff set1 set2 、redisTemplate.opsForSet().difference("set1", "set2")交集:sinter set1 set2 、redisTemplate.opsForSet().intersect("set1","set2")并集: sunion set1 set2 、redisTemplate.opsForSet().union("set1","set2")

有序集合(sort sets):在sets基础上,每个member会关联一个double 类型的分数,分数小->大排序

存值:zadd zset 10 "v6" 、 redisTemplate.opsForZSet().add("zset","v1",10)取值:zrange zset 0 -1 、 redisTemplate.opsForZSet().range("zset", 0, -1);

基数估算(hyperloglogs):在一批数据中,不重复元素的个数有多少

增加计数:pfadd user zhangsan (重复则不计数)、redisTemplate.opsForHyperLogLog().add(“user1”,“zhangsan”);获取计数:pfcount user 、redisTemplate.opsForHyperLogLog().size("user")合并:pfmerge pv user paper 、redisTemplate.opsForHyperLogLog().union("user","user1","user2")

地理空间(Geohash)

存储: geoadd "key" 104.085537 30.763127 地址 、redisTemplate.opsForGeo().add("成都",new Point(104.085537,30.763127),"春熙路")取值:geopos "成都" "春熙路" "地址二" 、redisTemplate.opsForGeo().position("成都", "春熙路");距离:geodist "成都" "d1" "d2" km 、 redisTemplate.opsForGeo().distance("成都", "d1", "d2", Metrics.KILOMETERS);范围: GEORADIUSBYMEMBER "成都" "春熙路" 10 km --成都key下,春熙路范围10km内的地点

//成都 key,春熙路范围5km的 地址
RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs()
.includeDistance().includeCoordinates().sortAscending().limit(6);
        GeoResults> radius = redisTemplate.opsForGeo()
                .radius("成都", "春熙路", new Distance(5, Metrics.KILOMETERS),args);

流(Stream):消息队列实现,提供消息的持久化和主备复制功能

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号