Redis
Redis 的主要五种数据类型
- String
- Hash
- List
- Set
- Zset
Redis 的扩展类型
-
地理经纬度查询(geo)
#############################################################geoadd geoadd china:city 100 200 chongqing #############################################################georadius、georadiusbymember ## georadius 从redis中获取指定经纬度附近哪些人及距离 redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUS Sicily 15 37 200 km WITHDIST 1) 1) "Palermo" 2) "190.4424" 2) 1) "Catania" 2) "56.4413" redis> GEORADIUS Sicily 15 37 200 km WITHCOORD 1) 1) "Palermo" 2) 1) "13.36138933897018433" 2) "38.11555639549629859" 2) 1) "Catania" 2) 1) "15.08726745843887329" 2) "37.50266842333162032" redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD 1) 1) "Palermo" 2) "190.4424" 3) 1) "13.36138933897018433" 2) "38.11555639549629859" 2) 1) "Catania" 2) "56.4413" 3) 1) "15.08726745843887329" 2) "37.50266842333162032" redis> ## 从redis中指定对象附近多少距离的人 redis> GEOADD Sicily 13.583333 37.316667 "Agrigento" (integer) 1 redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania" (integer) 2 redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km 1) "Agrigento" 2) "Palermo" #############################################################
redis 的事务
-
ACID
-
事务
- 开启事务(multi)
- 操作入队(set)
- 执行事务(exec) 放弃事务(discard)
-
Watch 事务锁
127.0.0.1:6379> set money 1000 OK 127.0.0.1:6379> set out 0 OK 127.0.0.1:6379> WATCH money OK 127.0.0.1:6379> MULTI OK 127.0.0.1:6379> DECRBY money 100 QUEUED 127.0.0.1:6379> INCRBY out 100 QUEUED 127.0.0.1:6379> EXEC ## 如果这里有其他线程对money进行操作赋值的话,命令会执行失败; 1) (integer) 900 2) (integer) 100 127.0.0.1:6379> UNWATCH OK
Jedis
持久化策略
RDB(默认)
存储在自己本地的redisdb中,创建子线程,然后通过定时及触发条件来进行创建镜像,后缀为rdb,有一定可能性丢失数据;
AOF
存储在本地文件中,他是每一条操作都要进行记录append,不会进行修改,后续启动过程会十分缓慢,数据恢复比较缓慢,但是数据是完整的,不会丢失了;会产生aof后缀的文件;每一秒同步一次
消息队列
订阅频道
127.0.0.1:6379> SUBSCRIBE shop
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "shop"
3) (integer) 1
1) "message"
2) "shop"
3) "1234"
1) "message"
2) "shop"
3) "1234"
1) "message"
2) "shop"
3) "test"
推送消息到频道
127.0.0.1:6379> PUBLISH shop 1234 ## 这里是用来消息发送的
(integer) 1
127.0.0.1:6379> PUBLISH shop test
(integer) 1
127.0.0.1:6379>
网友评论