赞
踩
# 安装
apt-get install redis-server 或者 yum -y install redis
# 卸载
sudo apt-get purge --auto-remove redis-server
# 查看启动
ps -aux | grep redis
# 启动
service redis-server start 或者 service redis start
# 停止
service redis-server stop 或者 service redis stop
# 连接服务
redis-cli -h [ip] -p [端口]
vim /etc/redis.conf
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis必须输入密码
requirepass 123456
#protected-mode(若有)置为no
protected-mode no
service redis stop
service redis start
from redis import StrictRedis
#声明StrictRedis对象
redis = StrictRedis(host='localhost',port=6379,db=0,password=None)
redis.set('name','Bob')
print(redis.get('name'))
#运行结果
#b'Bob'
from redis import StrictRedis redis = StrictRedis(host='localhost',port=6379,db=0,password=None) redis.set('name','Bob') redis.set('name1','Bob1') redis.set('name2','Bob2') redis.set('name3','Bob3') '''键操作开始''' redis.exists('name') # 是否存在name这个键 redis.expire('name',10) # 将name键的过期时间设置为10秒 redis.ttl('name') # 获取name这个键的过期时间 redis.delete('name3') # 删除name3这个键 redis.dbsize() # 获取当前数据库中键的数目 redis.type('name') # 判断name这个键的类型 redis.move('name1',2) # 将name1移动到2号数据库 redis.rename('name2','nickname') # 将name2重命名为nickname redis.keys('n*') # 获取所有已n开头的键 redis.randomkey() # 获取随机的一个键 redis.flushdb() # 删除当前选择数据库中的所有键 redis.flushall() # 删除所有数据库中的所有键
from redis import StrictRedis redis = StrictRedis(host='localhost',port=6379,db=0,password=None) '''字符串操作开始''' redis.set('name','Bob')) # 将name这个键的value值赋值为Bob redis.get('name')) # 返回name这个键的value redis.setex('name',1,'James') # 将name键的这个值设为James,有效期为1秒 redis.incr('count',1) # count对应的值增1,若不存在则创建并设置为1 redis.decr('age',1) # age对应的值减1,若不存在则创建并设置为-1 redis.mset({'name1':'Durant','name2':'James'}) # 将name1设为Durant,将name2设为James redis.mget(['name','nickname']) # 返回name和nickname的value redis.getset('name','Mike') # 赋值name值为value并得到上次的value redis.setnx('newname','James') # 如果newname这个键不存在,则设置值为James:", redis.setnx('newname','James') redis.msetnx({'name3':'Smith','name4':'Curry'}) # 在name3和name4均不存在的情况下才设置二者值 redis.setrange('name',6,'World') # 在name值为4的位置补World redis.append('nickname','ok') # 向键为nickname的值后面追加ok redis.substr('name',1,4) # 返回键为name的值的字符串没截取索引为1~4的字符 redis.getrange('name',1,4) # 返回键为name的值的字符串没截取索引为1~4的字符
"""列表操作list""" from redis import StrictRedis r = StrictRedis(host='localhost', port=6379, db=1) url = 'https://www.baidu.com' url1 = 'https://www.taobao.com' url2 = 'https://www.sina.com.cn' r.rpush('list', url, url1, url2) # 给键list表尾添加1,2,3 for i in range(r.llen('list')): t = r.lindex('list', i) item = t.decode('utf-8') print(item) r.rpush('list', url) # 给键list尾部添加字段url r.lpush('list', url) # 给键list头部添加字段url r.rpop('list', url) # 取出键list尾部字段url r.lpop('list', url) # 取出键list头部字段url r.lrange('list', 0, -1) # 查看键list里面所有的值 r.lrange('list', 0, 2) # 返回键list索引为0终止索引为2的值 r.lrem('list', 2, url) # 删除键list里面从头开始前面2个值是url的 r.lrem('list', -2, url) # 删除键list里面从尾部开始倒数的2个值是url的 r.lrem('list', 0, url) # 删除键list里面所有值是url的 r.llen('list') # 返回键为list的列表长度 r.lindex('list', 1) # 返回键为list索引为1的元素
"""集合操作set"""
from redis import StrictRedis
r = StrictRedis(host='localhost', port=6379, db=2)
r.sadd('tags', 'Book', 'Tea', 'Coffee') # 向键为tags的集合中添加Book、Tea和Coffee这3个内容
for me in r.smembers('tags'):
item = me.decode('utf-8')
print(item)
r.sadd('tags', 'Book') # 向键为tags的集合中添值
r.smembers("tags", "Book") # 判断Book是否是tags的元素
r.srem('tags', 'Book') # 从键为tags的集合中删除Book
r.scard('tags') # 获取键为tags的集合中的元素的个数
r.smembers('tags') # 返回键为tags的集合中所有元素
"""有序集合操作zset"""
from redis import StrictRedis
r = StrictRedis(host='localhost', port=6379, db=3)
# r.zadd('grade', 100, 'Bob')
用name指定散列表的名称,表内存储多个键值对,可进行键定位,值的更新
"""散列操作"""
from redis import StrictRedis
r = StrictRedis(host='localhost', port=6379, db=4)
r.hset('price', 'cake', 5) # 向键为price的散列表中添加映射关系,cake的值为5
r.hget('price', 'cake') # 获取键为price的散列表中键名为cake的值
r.hgetall('price') # 键为price的散列表中获取所有映射键值对
r.hmset('price', {'banana': 2, 'pear': 8}) # 向键为price的散列表中批量添加映射
r.hkeys('price') # 从键为price的散列表中获取所有映射键名
r.hvals('price') # 从键为price的散列表中获取所有映射键值
r.hdel("price", "cake") # 删除键为price的散列表中键名为cake的
r.hexists("price", "cake") # 判断键为price的散列表中键名为cake是否存在
r.hlen('price') # 从键为price的散列表中获取映射个数
其中如果name名称命名中间以冒号的形式
,则会归类到一个文件夹里面
如下代码,是hash的一个应用案例
import random import redis class RedisClient(object): """ redis client """ def __init__(self, _type, website, host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD): """ init redis client :param host: redis host :param port: redis port :param password: redis password """ self.db = redis.StrictRedis(host=host, port=port, password=password, decode_responses=True) self.type = _type self.website = website def name(self): """ get hash name :return: name of hash """ return f'{self.type}:{self.website}' def set(self, username, value): """ set key-value :param username: username :param value: password or cookies :return: """ return self.db.hset(self.name(), username, value) def get(self, username): """ get value :param username: username :return: """ return self.db.hget(self.name(), username) def delete(self, username): """ delete key-value :param username: username :return: result """ return self.db.hdel(self.name(), username) def count(self): """ get count :return: count """ return self.db.hlen(self.name()) def random(self): """ get random cookies or password :return: random cookies or password """ return random.choice(self.db.hvals(self.name())) def usernames(self): """ get all usernames :return: all usernames """ return self.db.hkeys(self.name()) def all(self): """ get all key-values :return: map of key-values """ return self.db.hgetall(self.name())
from redis import StrictRedis def connect_redis(config: dict, db_index: int): """ 连接redis数据库 :param config: :param db_index: :return: """ _db = StrictRedis( host=config['host'], port=config['port'], password=config['auth'], db=db_index) return _db local_config = { "host": "localhost", "port": 6379, "auth": None } redis_db = connect_redis(local_config, 0)
from redis import StrictRedis
import json
def save_redis_record(redis_db, key_name, record):
"""
存储1条数据
:param redis_db:
:param key_name: "键名"
:param record: 数据
:return:
"""
# 存储1条数据
redis_db.lpush(key_name, json.dumps(record, ensure_ascii=False)) # 添表头
redis_db.rpush(key_name, json.dumps(record, ensure_ascii=False)) # 添表尾
from redis import StrictRedis
import json
def fetch_redis_record(redis_db, key_name):
"""
redis取数据
:param redis_db:
:param key_name:
:return:
"""
data1 = json.loads(redis_db.lpop(key_name)) # 取表首
data2 = json.loads(redis_db.rpop(key_name)) # 取表尾
from redis import StrictRedis
import json
def read_range_redis_record(redis_db, key_name, s_index: int, e_index: int):
"""
读取索引为0终止索引为10的数据
:param redis_db:
:param key_name:
:param s_index: 起始索引
:param e_index: 终止索引
:return:
"""
records = redis_db.lrange(key_name, s_index, e_index)
for record in records:
print(json.loads(record))
bind 本机ipv4地址
redis-server.exe
redis-cli -h 192.168.1.8 -p 6379
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。