Tuesday, June 24, 2025

.::: Sample shell script integration MariaDB to Redis :::.

 



1. run script using mariadb
sh compare_maria_redis.sh mariadb
 


2. run script using redis
sh compare_maria_redis.sh redis
 
 
3. try delete 

delete from pembelian where kode_pembelian='BEL-E002';
 

4. run script using redis
sh compare_maria_redis.sh redis
 

5. run script using mariadb
sh compare_maria_redis.sh mariadb
 

6. run script using redis
sh compare_maria_redis.sh redis
 


7. try update 
update pembelian set jumlah_pembelian='21' where kode_pembelian='BEL-E015';
 

8. run script using redis
sh compare_maria_redis.sh redis
 

9. run script using mariadb
sh compare_maria_redis.sh mariadb

10. run script using redis
sh compare_maria_redis.sh redis
 

11.if mariadb stop check redis
sh compare_maria_redis.sh redis
 

12. script 

[root@teguhth redis]# cat compare_maria_redis.sh
#!/bin/bash

# MariaDB config
MYSQL_HOST="10.10.10.8"
MYSQL_PORT=3306
MYSQL_USER="admin"
MYSQL_PASS="admin"
MYSQL_DB="teguhth"

# Redis config
REDIS_HOST="127.0.0.1"
REDIS_PORT=6379

# Parameter
SOURCE=$1

if [ -z "$SOURCE" ]; then
    echo "❌ Parameter tidak boleh kosong!"
    exit 1
fi

if [ "$SOURCE" == "mariadb" ]; then
    echo "๐Ÿš€ Mengambil data dari MariaDB dan menyimpan ke Redis..."

    # ๐Ÿงน Hapus data usang dari Redis
    echo "๐Ÿงน Mengecek dan menghapus data usang di Redis..."
    redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" --scan --pattern "pembelian:*" | while read -r key
    do
        # Pecah key menjadi KODE_PEMBELIAN, KODE_BARANG, KODE_CUSTOMER
        IFS=':' read -r _ kode_pembelian kode_barang kode_customer <<< "$key"

        # Cek apakah data masih ada di MariaDB
        exists=$(mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASS" -D "$MYSQL_DB" -Nse "SELECT COUNT(*) FROM pembelian WHERE KODE_PEMBELIAN='$kode_pembelian' AND KODE_BARANG='$kode_barang' AND KODE_CUSTOMER='$kode_customer';")

        if [ "$exists" -eq 0 ]; then
            redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" DEL "$key" > /dev/null
            echo "๐Ÿ—‘ Dihapus dari Redis (sudah tidak ada di MariaDB): $key"
        fi
    done

    # Masukkan data baru dari MariaDB ke Redis
    QUERY="SELECT KODE_PEMBELIAN, KODE_BARANG, KODE_CUSTOMER, TANGGAL_PEMBELIAN, JUMLAH_PEMBELIAN FROM pembelian;"
    mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" -p"$MYSQL_PASS" -D "$MYSQL_DB" -Bse "$QUERY" | while IFS=$'\t' read -r kode_pembelian kode_barang kode_customer tanggal jumlah
    do
        redis_key="pembelian:${kode_pembelian}:${kode_barang}:${kode_customer}"
        redis_value="TANGGAL=$tanggal|JUMLAH=$jumlah"

        redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" SET "$redis_key" "$redis_value"
        echo "✅ Disimpan ke Redis → $redis_key → $redis_value"
    done

    echo "๐ŸŽ‰ Semua data pembelian selesai dimasukkan ke Redis!"

elif [ "$SOURCE" == "redis" ]; then
    echo "๐Ÿ” Mengambil semua kunci pembelian dari Redis (diurutkan)..."

    # Tampilkan semua kunci pembelian dengan urutan alfanumerik
    redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" --scan --pattern "pembelian:*" | sort | while read -r key
    do
        value=$(redis-cli -h "$REDIS_HOST" -p "$REDIS_PORT" GET "$key")
        echo "๐Ÿ“ฆ $key → $value"
    done

    echo "๐ŸŽ‰ Semua data dari Redis sudah ditampilkan!"

else
    echo "⚠ Gunakan perintah:"
    echo "./compare_maria_redis.sh mariadb   → ambil dari MariaDB, simpan ke Redis"
    echo "./compare_maria_redis.sh redis     → ambil dari Redis, tampilkan"
    exit 1
fi

[root@teguhth redis]#


No comments:

Post a Comment

Popular Posts