133 lines
3.6 KiB
Python
133 lines
3.6 KiB
Python
import logging
|
|
from firefly_client import FireflyDatabase
|
|
|
|
# Set up logging
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
)
|
|
logger = logging.getLogger("FireflyExample")
|
|
|
|
def demonstrate_string_operations(db):
|
|
"""Example of basic string operations"""
|
|
print("\n=== String Operations ===")
|
|
|
|
# Set a string value
|
|
db.string_set("greeting", "Hello, Firefly!")
|
|
|
|
# Get the string value
|
|
value = db.string_get("greeting")
|
|
print(f"Retrieved string: {value}")
|
|
|
|
# Delete the key
|
|
db.delete("greeting")
|
|
|
|
def demonstrate_list_operations(db):
|
|
"""Example of list operations"""
|
|
print("\n=== List Operations ===")
|
|
|
|
# Push items to a list
|
|
list_key = "todo_list"
|
|
db.list_right_push(list_key, "Buy groceries")
|
|
db.list_right_push(list_key, "Write code")
|
|
db.list_right_push(list_key, "Exercise")
|
|
|
|
# Get all items
|
|
items = db.list_range(list_key, 0, -1)
|
|
print("Todo list items:")
|
|
for item in items:
|
|
print(f"- {item}")
|
|
|
|
# Pop an item from the list
|
|
completed = db.list_left_pop(list_key)
|
|
print(f"Completed task: {completed}")
|
|
|
|
# Clean up
|
|
db.delete(list_key)
|
|
|
|
def demonstrate_hash_operations(db):
|
|
"""Example of hash operations"""
|
|
print("\n=== Hash Operations ===")
|
|
|
|
# Store user profile in a hash
|
|
user_key = "user:123"
|
|
db.hash_set(user_key, "name", "Alice")
|
|
db.hash_set(user_key, "email", "alice@example.com")
|
|
db.hash_set(user_key, "location", "San Francisco")
|
|
|
|
# Get all user data
|
|
user_data = db.hash_get_all(user_key)
|
|
print("User profile:")
|
|
for field, value in user_data.items():
|
|
print(f" {field}: {value}")
|
|
|
|
# Check if a field exists
|
|
has_email = db.hash_field_exists(user_key, "email")
|
|
print(f"Has email? {has_email}")
|
|
|
|
# Clean up
|
|
db.delete(user_key)
|
|
|
|
def demonstrate_pipeline_operations(db):
|
|
"""Example of pipeline operations"""
|
|
print("\n=== Pipeline Operations ===")
|
|
|
|
# Enable pipeline mode
|
|
db.set_pipeline_mode(True)
|
|
db.set_batch_size(3)
|
|
|
|
# Queue multiple commands
|
|
print("Queueing commands...")
|
|
db.string_set("counter:1", "100")
|
|
db.string_set("counter:2", "200")
|
|
db.string_set("counter:3", "300")
|
|
|
|
# Check queue size
|
|
queued = db.get_queued_command_count()
|
|
print(f"Queued commands: {queued}")
|
|
|
|
# Execute all commands
|
|
print("Executing pipeline...")
|
|
results = db.flush_pipeline()
|
|
print(f"Pipeline results: {results}")
|
|
|
|
# Disable pipeline mode
|
|
db.set_pipeline_mode(False)
|
|
|
|
# Verify results
|
|
for i in range(1, 4):
|
|
value = db.string_get(f"counter:{i}")
|
|
print(f"counter:{i} = {value}")
|
|
|
|
# Clean up
|
|
for i in range(1, 4):
|
|
db.delete(f"counter:{i}")
|
|
|
|
def main():
|
|
"""Main example script demonstrating Firefly database operations"""
|
|
try:
|
|
# Connect to Firefly database
|
|
with FireflyDatabase(host="localhost", port=6379) as db:
|
|
print("Connected to Firefly database")
|
|
|
|
# Test connection
|
|
if db.ping():
|
|
print("Server is responsive")
|
|
else:
|
|
print("Server not responding")
|
|
return
|
|
|
|
# Run demonstrations
|
|
demonstrate_string_operations(db)
|
|
demonstrate_list_operations(db)
|
|
demonstrate_hash_operations(db)
|
|
demonstrate_pipeline_operations(db)
|
|
|
|
print("\nExample completed successfully")
|
|
|
|
except Exception as e:
|
|
logger.error(f"Error: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|