redis因为是原子性,所以使用redis的计算器作自增主键可以保证主键的唯一性。
1.springboot使用redis计数器。
插入计算器。
1. @Override 2. public void incr(@Param("id") String id) { 3. ValueOperations<String, Long> operations = redisTemplate.opsForValue(); 4. operations.increment(id, 1L); 5. }
获取自增主键。
1. @Override 2. public void sincr(@Param("id") String id) { 3. System.out.println(getIncrValue(id)); 4. } 5. 6. public long getIncrValue(final String key) { 7. return (long) redisTemplate.execute(new RedisCallback<Long>() { 8. @Override 9. public Long doInRedis(RedisConnection connection) throws DataAccessException { 10. RedisSerializer<String> serializer=redisTemplate.getStringSerializer(); 11. byte[] rowkey=serializer.serialize(key); 12. byte[] rowval=connection.get(rowkey); 13. try { 14. String val=serializer.deserialize(rowval); 15. return Long.parseLong(val); 16. } catch (Exception e) { 17. return 0L; 18. } 19. } 20. }); 21. }