Rumah >pangkalan data >Redis >Mari kita bincangkan tentang isu merealisasikan jualan kilat dengan Redis
Artikel ini membawa anda pengetahuan yang berkaitan tentang Redis, yang terutamanya memperkenalkan kandungan yang berkaitan tentang merealisasikan jualan kilat, termasuk logik jualan kilat, tamat masa pautan sedia ada, penjualan berlebihan dan warisan inventori Mari kita lihat masalah di bawah Saya harap ia akan membantu semua orang.
Pembelajaran yang disyorkan: Tutorial video Redis
1.uid dan proid penghakiman tidak kosong
2 Connect redis
3. Selesaikan
versi springBoot. (pengenalan pom.xml, konfigurasi application.yml, dan kemudian menyuntik objek)
3.2 Masalah terlebih jualGunakan transaksi Redis, jam tangan kunci yang optimispublic class JedisPoolUtil { private static volatile JedisPool jedisPool = null; private JedisPoolUtil() { } public static JedisPool getJedisPoolInstance() { if (null == jedisPool) { synchronized (JedisPoolUtil.class) { if (null == jedisPool) { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(200); poolConfig.setMaxIdle(32); poolConfig.setMaxWaitMillis(100 * 1000); poolConfig.setBlockWhenExhausted(true); poolConfig.setTestOnBorrow(true); jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379, 60000); } } } return jedisPool; }}//使用JedisPool jedisPoolInstance = JedisPoolUtil.getJedisPoolInstance();Jedis jedis = jedisPoolInstance.getResource();3.3. Isu Inventori yang disebabkan oleh penguncian optimistik
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-data-redis</artifactid></dependency><dependency> <groupid>redis.clients</groupid> <artifactid>jedis</artifactid> <version>3.2.0</version></dependency>
spring: redis: host: 127.0.0.1 port: 6379 database: 0 timeout: 1800000 lettuce: pool: max-active: 20 max-wait: -1 max-idle: 5 min-idle: 0Gunakan bahasa skrip terbenam Lua
@Autowired private RedisTemplate redisTemplate;untuk menulis operasi Redis yang kompleks atau berbilang langkah sebagai skrip dan serahkannya kepada Redis untuk dijalankan sekali gus, mengurangkan bilangan sambungan berulang ke reids. Tingkatkan prestasi. Skrip LUA adalah serupa dengan transaksi redis Ia mempunyai tahap atomicity tertentu dan tidak akan dibariskan oleh perintah lain Ia boleh melengkapkan operasi transaksi redis
//监视库存 jedis.watch(kcKey);//中间代码忽略 //7 秒杀过程 //使用事务 Transaction multi = jedis.multi();//组队操作 multi.decr(kcKey);multi.sadd(userKey,uid);//执行 List<object> results = multi.exec();if(results == null || results.size()==0) { System.out.println("秒杀失败了...."); jedis.close(); return false;}</object>
untuk menggunakan skrip lua untuk menghapuskan pengguna dan menyelesaikan masalah penjualan berlebihan.
Atas ialah kandungan terperinci Mari kita bincangkan tentang isu merealisasikan jualan kilat dengan Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!