Skip to content

Commit 636004e

Browse files
committed
all data types have demos
1 parent 12c3110 commit 636004e

15 files changed

+140
-50
lines changed

Diff for: main.py

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""Entry point."""
2+
from redis_python_tutorial import init_redis_app
3+
4+
if __name__ == "__main__":
5+
init_redis_app()

Diff for: pyproject.toml

+1-4
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,12 @@ redis = "*"
2121
loguru = "*"
2222
python-dotenv = "*"
2323

24-
[tool.poetry.dev-dependencies]
25-
pytest = "^4.6"
26-
2724
[build-system]
2825
requires = ["poetry>=0.12"]
2926
build-backend = "poetry.masonry.api"
3027

3128
[tool.poetry.scripts]
32-
run = "wsgi:main"
29+
run = "main:init_redis_app"
3330

3431
[tool.poetry.urls]
3532
issues = "https://github.com/hackersandslackers/redis-python-tutorial/issues"

Diff for: redis_python_tutorial/__init__.py

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
1+
"""Set and manipulate data in Redis."""
12
from redis_python_tutorial.client import r
2-
from redis_python_tutorial.data import set_single_values, set_nested_values
3+
from redis_python_tutorial.data import init_db_with_values
4+
from redis_python_tutorial.data.string import string_values_demo
5+
from redis_python_tutorial.data.hash import hash_values_demo
6+
from redis_python_tutorial.data.list import list_values_demo
7+
from redis_python_tutorial.data.set import set_values_demo
8+
from redis_python_tutorial.data.zset import sorted_set_values_demo
39

410

5-
def main():
6-
"""Create records in Redis."""
7-
set_single_values(r)
8-
set_nested_values(r)
11+
def init_redis_app():
12+
"""Entry point function."""
13+
r.flushdb()
14+
init_db_with_values(r)
15+
string_values_demo(r)
16+
hash_values_demo(r)
17+
list_values_demo(r)
18+
set_values_demo(r)
19+
sorted_set_values_demo(r)

Diff for: redis_python_tutorial/client.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
"""Create Redis client."""
12
import redis
23
from config import (redis_host,
34
redis_password,
@@ -9,4 +10,4 @@
910
port=redis_port,
1011
db=redis_db,
1112
charset="utf-8",
12-
decode_responses=True)
13+
decode_responses=True,)

Diff for: redis_python_tutorial/data.py

-31
This file was deleted.

Diff for: redis_python_tutorial/data/__init__.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
"""Set and manipulate data in Redis."""
3+
import time
4+
from config import redis_expiration
5+
6+
7+
def init_db_with_values(r):
8+
"""Set single key/value pairs."""
9+
r.set('ip_address', '0.0.0.0.')
10+
r.set('timestamp', int(time.time()))
11+
r.set('user_agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3)')
12+
r.set('current_page', 'account', redis_expiration)
13+
return r.keys()

Diff for: redis_python_tutorial/data/hash.py

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""Working with hash values."""
2+
from redis_python_tutorial.logging import logger
3+
4+
5+
def hash_values_demo(r):
6+
"""Create a hash value."""
7+
record = {
8+
"name": "Hackers and Slackers",
9+
"description": "Mediocre tutorials",
10+
"website": "https://hackersandslackers.com/",
11+
"github": "https://github.com/hackersandslackers"
12+
}
13+
r.hmset('business', record)
14+
logger.info(f"business: {r.hgetall('business')}")

Diff for: redis_python_tutorial/data/list.py

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"""Working with list values."""
2+
from redis_python_tutorial.logging import logger
3+
4+
5+
def list_values_demo(r):
6+
"""Push and pop items from a list."""
7+
# Add single string to a new list.
8+
r.lpush('my_list', 'A')
9+
logger.info(f"my_list: {r.lrange('my_list', 0, -1)}")
10+
# Push second string to list from the right.
11+
r.rpush('my_list', 'B')
12+
logger.info(f"my_list: {r.lrange('my_list', 0, -1)}")
13+
# Push third string to list from the right.
14+
r.rpush('my_list', 'C')
15+
logger.info(f"my_list: {r.lrange('my_list', 0, -1)}")
16+
# Remove 1 instance from the list where the value equals 'C'.
17+
r.lrem('my_list', 1, 'C')
18+
logger.info(f"my_list: {r.lrange('my_list', 0, -1)}")
19+
# Push a string to our list from the left.
20+
r.lpush('my_list', 'C')
21+
logger.info(f"my_list: {r.lrange('my_list', 0, -1)}")
22+
# Pop first element of our list and move it to the back.
23+
r.rpush('my_list', r.lpop('my_list'))
24+
logger.info(f"my_list: {r.lrange('my_list', 0, -1)}")
25+
return r.lrange('my_list', 0, -1)

Diff for: redis_python_tutorial/data/set.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"""Working with set values."""
2+
from redis_python_tutorial.logging import logger
3+
4+
5+
def set_values_demo(r):
6+
"""Execute unions and intersets between sets."""
7+
# Add item to set 1
8+
r.sadd('my_set_1', 'Y')
9+
logger.info(f"my_set_1: {r.smembers('my_set_1')}'")
10+
# Add item to set 1
11+
r.sadd('my_set_1', 'X')
12+
logger.info(f"my_set_1: {r.smembers('my_set_1')}'")
13+
# Add item to set 2
14+
r.sadd('my_set_2', 'X')
15+
logger.info(f"my_set_2: {r.smembers('my_set_2')}'")
16+
# Add item to set 2
17+
r.sadd('my_set_2', 'Z')
18+
logger.info(f"my_set2: {r.smembers('my_set_2')}'")
19+
# Union set 1 and set 2
20+
logger.info(f"Union: {r.sunion('my_set_1', 'my_set_2')}")
21+
# Interset set 1 and set 2
22+
logger.info(f"Intersect: {r.sinter('my_set_1', 'my_set_2')}")

Diff for: redis_python_tutorial/data/string.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""Working with string values."""
2+
from redis_python_tutorial.logging import logger
3+
4+
5+
def string_values_demo(r):
6+
"""Manipulate strings as integers."""
7+
r.set('index', '1')
8+
# Increment string by 1
9+
r.incr('index')
10+
logger.info(f"index: {r.get('index')}")
11+
# Decrement string by 1
12+
r.decr('index')
13+
logger.info(f"index: {r.get('index')}")
14+
# Increment string by 3
15+
r.incrby('index', 3)
16+
logger.info(f"index: {r.get('index')}")

Diff for: redis_python_tutorial/data/zset.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"""Working with sorted set values."""
2+
from redis_python_tutorial.logging import logger
3+
4+
5+
def sorted_set_values_demo(r):
6+
"""Create sorted set and change indexof values."""
7+
# Initialize sorted set with 3 values
8+
r.zadd('top_songs_set', {'Never Change - Jay Z': 1,
9+
'Rich Girl - Hall & Oats': 2,
10+
'The Prayer - Griz': 3})
11+
logger.info(f"top_songs_set: {r.zrange('top_songs_set', 0, -1)}'")
12+
# Add item to set with conflicting value
13+
r.zadd('top_songs_set', {'Can\'t Figure it Out - Bishop Lamont': 3})
14+
logger.info(f"top_songs_set: {r.zrange('top_songs_set', 0, -1)}'")
15+
# Shift index of a value
16+
r.zincrby('top_songs_set', 3, 'Never Change - Jay Z')
17+
logger.info(f"top_songs_set: {r.zrange('top_songs_set', 0, -1)}'")

Diff for: redis_python_tutorial/logging.py

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"""Shared logger."""
2+
import sys
3+
from loguru import logger
4+
5+
6+
logger.add(sys.stderr,
7+
format="{message}",
8+
filter="redis_python_tutorial",
9+
level="INFO")

Diff for: tests/__init__.py

Whitespace-only changes.

Diff for: tests/test_redis_python_tutorial.py

-5
This file was deleted.

Diff for: wsgi.py

-4
This file was deleted.

0 commit comments

Comments
 (0)