Application showcasing simple write through cache implementation using spring-redis module and jedis client
@Cacheable(value = "product", key = "#productId")
@CachePut(value = "product", key = "#productId")
@CacheEvict(cacheNames="product", key="#productId")
Read more about :- https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/
Used open-jdk version 17 (https://openjdk.org/projects/jdk/17/)
https://redis.io/docs/getting-started/installation/
Upon successful redis installation and running standalone redis, you should be able to view below screenshot
![Screenshot 2023-05-11 at 2 01 30 AM](https://private-user-images.githubusercontent.com/32014166/237689421-f76f484c-a578-441d-bc45-2d0f60d07562.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyNjU4MTYsIm5iZiI6MTcyMjI2NTUxNiwicGF0aCI6Ii8zMjAxNDE2Ni8yMzc2ODk0MjEtZjc2ZjQ4NGMtYTU3OC00NDFkLWJjNDUtMmQwZjYwZDA3NTYyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDE1MDUxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRkMGRmZjk4MWNlMzE3YTA3YzliZjFkNjNlMjg5N2ExYWE1NWM0ZGQ4YzM1ZjQ4NmZiNjhlNjA2MmRhODhhMDYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.cNkg0pIGf8FK-Cazzf1pEJZQ_MKpAorpfhWW5TAcenk)
We are using maven tool to build the project. You can download & install maven from official website (https://maven.apache.org/install.html)
Download the source code using git ssh or https from https://github.com/souravkantha/spring-redis-cache
-
Go the root directory i.e; spring-redis-cache
-
Use command
mvn clean package
. After the build is successful, run the program using following commandjava -jar target/cache-1.0.jar
Upon successful start of the service, you should see the h2 database console
Open h2 console : http://localhost:8080/h2-console/login.jsp
![Screenshot 2023-05-10 at 11 44 29 PM](https://private-user-images.githubusercontent.com/32014166/237689056-65ce330f-7ad6-40c9-848e-324b35917d06.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyNjU4MTYsIm5iZiI6MTcyMjI2NTUxNiwicGF0aCI6Ii8zMjAxNDE2Ni8yMzc2ODkwNTYtNjVjZTMzMGYtN2FkNi00MGM5LTg0OGUtMzI0YjM1OTE3ZDA2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDE1MDUxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWY5MGU3ZjFjZTIzNTIxYzA0ZGQwNmY4OTI1NGI0Y2Y1NTBmODM2MWExZDUzOGEzNzFkY2Q4YzY1MGIyYWYxYTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FTa307yKJuXxNnxojwgiVfZbdPKQsmYF4hBT4bDkCDU)
![Screenshot 2023-05-10 at 11 56 25 PM](https://private-user-images.githubusercontent.com/32014166/237689092-035f5634-7347-4d21-94d0-583830328994.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyNjU4MTYsIm5iZiI6MTcyMjI2NTUxNiwicGF0aCI6Ii8zMjAxNDE2Ni8yMzc2ODkwOTItMDM1ZjU2MzQtNzM0Ny00ZDIxLTk0ZDAtNTgzODMwMzI4OTk0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDE1MDUxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA3ZmEyMzI1MDg0NGFlMjFkMGFhMjI5YTViNTJjYjgzMjkxNDEwOGIwYzI3MDk5YzY3OTIyZDVlN2QzN2Y0MmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.FD8H4p4Yyz-S5AZuPofq5rS6MXhBP502G-65ZGrEwio)
INSERT INTO ITEMS VALUES (10000, 'Kelloggs Crunchy Granola Almonds and Cranberries', 'Kelloggs Crunchy Granola Almonds and Cranberries','Breakfast Cereal', 330, 1, 1);
INSERT INTO ITEMS VALUES (10001, 'Kelloggs Crunchy Granola Chocolate & Almonds', 'Kelloggs Crunchy Granola Chocolate & Almonds', 'Breakfast Cereal', 350, 1, 1);
INSERT INTO ITEMS VALUES (10002, 'Kelloggs muesli', 'Kelloggs muesli','Breakfast Cereal', 270, 1, 1);
INSERT INTO ITEMS VALUES (10003, 'Kelloggs Chocos', 'Kelloggs Chocos','Breakfast Cereal', 350, 1, 1);
INSERT INTO ITEMS VALUES (10004, 'Kelloggs Corn Flakes Real Almond Honey', 'Kelloggs Corn Flakes Real Almond Honey', 'Breakfast Cereal', 195, 1, 1);
curl --location --request POST 'http://localhost:8080/products' --header 'Content-Type: application/json' --data-raw '{"productId": 20000,"productName": "Kelloggs Crunchy Granola", "productDescription": "Kelloggs Crunchy Granola Almonds and Cranberries","type": "Breakfast Cereal","price": 330,"quantity": 1,"version": 1}'
![Screenshot 2023-05-11 at 6 33 39 PM](https://private-user-images.githubusercontent.com/32014166/237697910-200c89a3-c43e-4796-80ba-a4d9a6e248ac.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyNjU4MTYsIm5iZiI6MTcyMjI2NTUxNiwicGF0aCI6Ii8zMjAxNDE2Ni8yMzc2OTc5MTAtMjAwYzg5YTMtYzQzZS00Nzk2LTgwYmEtYTRkOWE2ZTI0OGFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDE1MDUxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRkZTc3NzQ2MzEwYjQ5NDk5NjQ2NjJhY2RhMmYwNDYwZmE2YWQ4YjZjMDc3Nzc0ZWE5YmJhMDE3N2U3NjcyYTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.s2d1iU8I8X2pnMNH5DE9nVbxNPrXyi8eJJrDG2yTUes)
curl --location --request PATCH 'http://localhost:8080/products/20000' --header 'Content-Type: application/json' --data-raw '{"productId": 20000,"productName": "Kelloggs Crunchy Granola Almonds 1 Kg","productDescription": "Kelloggs Crunchy Granola Almonds and Cranberries","type":"Breakfast Cereals","price": 330,"quantity": 1,"version": 1}'
curl --location --request GET 'http://localhost:8080/products/20000'
curl --location --request DELETE 'http://localhost:8080/products/20000'
![Screenshot 2023-05-11 at 6 37 04 PM](https://private-user-images.githubusercontent.com/32014166/237698748-a5bc6d43-a3e8-4dfe-b057-3d36bf073da4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjIyNjU4MTYsIm5iZiI6MTcyMjI2NTUxNiwicGF0aCI6Ii8zMjAxNDE2Ni8yMzc2OTg3NDgtYTViYzZkNDMtYTNlOC00ZGZlLWIwNTctM2QzNmJmMDczZGE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI5VDE1MDUxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU4NmI1OTVjN2Q4MDMzMGY3YWNkZjQ5OTEwZTUwNGYyZmYwNDkyNWRhZGE2ZmFkYjRlOGEwZmNhZTI0ZGQ1ZTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Di4Siow2jTdnO0dAxy3coXgRdTuFDtC_MG3wkq9j45Y)