diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 716d725254..9508995d23 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -252,6 +252,30 @@ jobs: - name: Print Docker image digest run: echo ${{ steps.docker_build.outputs.digest }} + push-hm-keydb: + name: Push hm-keydb to GitHub Container Registry + runs-on: ubuntu-20.04 + timeout-minutes: 10 + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push Docker image + id: docker_build + uses: docker/build-push-action@v2 + with: + context: . + file: ./hm-keydb/Dockerfile + push: true + tags: ghcr.io/hongbo-miao/hm-keydb:latest + - name: Print Docker image digest + run: echo ${{ steps.docker_build.outputs.digest }} + push-hm-alpine: name: Push hm-alpine to GitHub Container Registry runs-on: ubuntu-20.04 diff --git a/ansible/playbook.yml b/ansible/playbook.yml index 6da57484cb..2adb97a6c0 100644 --- a/ansible/playbook.yml +++ b/ansible/playbook.yml @@ -42,10 +42,6 @@ community.general.homebrew: name: ory-hydra state: present - - name: Install presto - community.general.homebrew: - name: presto - state: present - name: Install redis community.general.homebrew: name: redis diff --git a/keydb/Dockerfile b/keydb/Dockerfile new file mode 100644 index 0000000000..47bab34e5d --- /dev/null +++ b/keydb/Dockerfile @@ -0,0 +1,11 @@ +FROM alpine:3.15.4 AS builder +RUN mkdir -p /usr/lib/keydb/modules/ \ + && wget https://github.com/Hongbo-Miao/hm-redis-modules/raw/main/redisgraph.Linux-ubuntu18.04-x86_64.2.8.11/redisgraph.so + +FROM eqalpha/keydb:x86_64_v6.2.2 +# https://github.com/RedisGraph/RedisGraph/blob/master/README.md#loading-redisgraph-into-redis +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y libgomp1 +COPY --from=builder /usr/lib/keydb/modules/ /usr/lib/keydb/modules/ +CMD ["keydb-server", "/etc/keydb/keydb.conf", "--loadmodule", "/usr/lib/keydb/modules/redisgraph.so"] diff --git a/keydb/Makefile b/keydb/Makefile index 4fe09eab5f..1e1bc03cf4 100644 --- a/keydb/Makefile +++ b/keydb/Makefile @@ -18,6 +18,9 @@ redis-cli-set: redis-cli-get: redis-cli GET hm-name +redis-benchmark: + redis-benchmark -a passw0rd + # Redis - publish/subscribe redis-cli-subscribe: redis-cli SUBSCRIBE hm-channel @@ -39,6 +42,30 @@ redis-cli-lua-script-exists: redis-cli-lua-script-flush: redis-cli SCRIPT FLUSH +# Redis - Graph +redis-cli-module-list: + redis-cli MODULE LIST +redis-cli-graph-create-nodes: + # Each node represents an actor + redis-cli GRAPH.QUERY movies "CREATE (:Actor {name:'Mark Hamill', actor_id:1}), (:Actor {name:'Harrison Ford', actor_id:2}), (:Actor {name:'Carrie Fisher', actor_id:3})" + # This node represent a movie + redis-cli GRAPH.QUERY movies "CREATE (:Movie {title:'Star Wars: Episode V - The Empire Strikes Back', release_year: 1980 , movie_id:1})" +redis-cli-graph-create-relationships: + # Mark Hamill played Luke Skywalker in Star Wars: Episode V - The Empire Strikes Back' + redis-cli GRAPH.QUERY movies "MATCH (a:Actor),(m:Movie) WHERE a.actor_id = 1 AND m.movie_id = 1 CREATE (a)-[r:ACTED_IN {role:'Luke Skywalker'}]->(m) RETURN r" + # Harrison Ford played Han Solo + redis-cli GRAPH.QUERY movies "MATCH (a:Actor), (m:Movie) WHERE a.actor_id = 2 AND m.movie_id = 1 CREATE (a)-[r:ACTED_IN {role:'Han Solo'}]->(m) RETURN r" + # Carrie Fisher played Princess Leila + redis-cli GRAPH.QUERY movies "MATCH (a:Actor), (m:Movie) WHERE a.actor_id = 3 AND m.movie_id = 1 CREATE (a)-[r:ACTED_IN {role:'Princess Leila'}]->(m) RETURN r" +redis-cli-graph-viz: + redis-cli GRAPH.QUERY movies "MATCH (m:Movie) WHERE m.movie_id = 1 RETURN m" +redis-cli-graph-del: + redis-cli DEL movies + +# Redis Stack +redis-stack-server: + redis-stack-server + # KeyDB keydb-start: keydb-server @@ -46,6 +73,8 @@ keydb-stop: keydb-cli SHUTDOWN keydb-cli: keydb-cli +keydb-cli-password: + keydb-cli --pass passw0rd keydb-cli-ping: keydb-cli PING keydb-cli-keys: @@ -61,11 +90,19 @@ keydb-cli-hmget: keydb-start-multi-master: keydb-server --multi-master yes --active-replica yes --replicaof 192.168.2.58 6379 --requirepass passw0rd --masterauth passw0rd keydb-server --multi-master yes --active-replica yes --replicaof 192.168.2.117 6379 --requirepass passw0rd --masterauth passw0rd -keydb-cli-password: - keydb-cli --pass passw0rd keydb-cli-lua-script-load: keydb-cli --pass passw0rd SCRIPT LOAD "$$(cat greet.lua)" -# -redis-benchmark: - redis-benchmark -a passw0rd +# KeyDB - Docker +keydb-docker-build: + cd .. && \ + docker build --file=keydb/Dockerfile --tag=ghcr.io/hongbo-miao/hm-keydb:latest . +keydb-docker-push: + docker push ghcr.io/hongbo-miao/hm-keydb:latest +keydb-docker-run: + docker run \ + --detach \ + --name=hm-keydb \ + --publish=6379:6379 \ + ghcr.io/hongbo-miao/hm-keydb:latest \ + keydb-server /etc/keydb/keydb.conf --multi-master yes --active-replica yes --replicaof 192.168.2.58 6379 --requirepass passw0rd --masterauth passw0rd