cari

Rumah  >  Soal Jawab  >  teks badan

Redis分布式锁如何实现?

Redis 是一内存Key-Value数据库, 现在一般都用它来做缓存服务.目前在一次生产环境中使用了它做业务缓存, 主要用的使用场景是: 抽奖活动, 活动中对于不同的奖项有奖品数量限制, 这就相当于是一个抢购的功能一般, 由于后端的服务是分布式的, 这便衍生出一个问题, 这个奖品数量的控制如何实现? 参考了下一些网友的经验, 发现他们大部分都是使用 RedisSETNX命令+sleep 实现类似锁的概念. 但sleep的方法似乎会造成一些不必要的资源消耗, 官方推荐的是使用Redisson(Java语言), 它已经实现了RLock, 不过我们已经使用了Jedis实现对Redis操作. 不知道大家对此场景有更加好的建议? 如果有使用过RedissonJedis经验最好, 可以一起分析讨论下两者的差异与优缺点.谢谢.

怪我咯怪我咯2796 hari yang lalu787

membalas semua(3)saya akan balas

  • 迷茫

    迷茫2017-04-24 09:12:16

    Redsi yang digunakan untuk mengira haruslah satu titik dalam redis ialah operasi atom Selepas pelaksanaan, periksa sama ada ia adalah
    Mengapa menggunakan kunci? keluar;

    balas
    0
  • PHPz

    PHPz2017-04-24 09:12:16

    Berikut ialah strategi kunci yang diedarkan Redis yang ditulis oleh netizen
    Melaksanakan kunci yang diedarkan berdasarkan Redis

    Jedis tidak melaksanakan kunci yang diedarkan oleh rasminya memperkenalkan Ression sebagai pelanggan Java yang disyorkan kemudian. Jika anda melaksanakannya sendiri, anda mungkin mempunyai banyak pepijat lihat Ression untuk melaksanakan kunci yang diedarkan, atau lihat jika anda boleh mengambil kod sumber dan mengubah suainya, dan sebaliknya menggunakan Jedis.

    balas
    0
  • 迷茫

    迷茫2017-04-24 09:12:16

    Hanya gunakan b(r|l)pop:
    1, letakkan elemen ke dalam senarai lebih awal
    2, berbilang pelanggan melakukan brpop dan hanya satu pelanggan mendapat elemen (iaitu, mendapat kunci )
    3. Selepas memproses, blpus elemen kembali ke senarai dan tunggu pelanggan lain untuk mendapatkannya
    4 elemen terlebih dahulu
    2. Dapatkannya Jika pelanggan keluar secara tidak normal selepas mengunci, akan ada masalah

    balas
    0
  • Batalbalas