Redis自我学习

2020-09-08  本文已影响0人  maohh

Redis

Redis 的主要五种数据类型

  1. String
  2. Hash
  3. List
  4. Set
  5. Zset

Redis 的扩展类型

  1. 地理经纬度查询(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 的事务

  1. ACID

  2. 事务

    1. 开启事务(multi)
    2. 操作入队(set)
    3. 执行事务(exec) 放弃事务(discard)
  3. 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>
上一篇下一篇

猜你喜欢

热点阅读