Skip to main content

An memory management module.

Project description

System Requirements

  • Python >= 3.7
  • moca_core
  • moca_config
  • moca_log_file

Installation

pip install moca_memory==1.0.5
or
pip install moca_memory

Overview

English

This is the memory management module developed by el.ideal-ideas for Moca System. All data in this class have a life-time. When your use the data, the remaining-time will be reset. When the remaining-time is less than 0. MocaMemory will save the data to file, and remove it from memory. If you want to use the data that is not on memory, but in the cache file, MocaMemory will load the data automatically, and reset remaining-time. And MocaMemory can keep the data after your program is sotpped. (method save_all_data_to_file)


日本語

これはモカシステムのためにel.ideal-ideasによって開発されたメモリ管理モジュールである。 このクラスによって管理されるすべてのデータはライフタイムを持っています。 データは使用されたときに残り時間がリセットされます。 残り時間が0以下になったとき、データはファイルに保存され、メモリから削除されます。 ファイルに保存されメモリ上にないデータを使用しようとした場合、MocaMemoryは自動的にファイルからデータをロードして 残り時間をリセットします。 さらにメモリ上のデータをプログラム終了後の保持する手段としても使用できます。(メソッド save_all_data_to_file)


简体中文

这是el.ideal-ideas为茉客系统开发的内存管理模块。 由MocaMemory类管理的所有数据都有寿命。 如果数据被调用,其剩余时间会被刷新。 如果剩余时间变成0以下,数据就会被保存到文件并且从内存删除。 当您调用被缓存到文件里的数据的时候。MocaMemory会自动从文件读取数据并刷新剩余时间。 也可以用于在程序运行停止后用来保存内存里的数据。(方法 save_all_data_to_file)

Usage Example

# Create a instance
# インスタンス化
# 生成实例
moca_memory = MocaMemory('main', './')

# With MocaConfig and MocaLogFile module.
# MocaConfig と MocaLogFile モジュールと一緒に使用する。
# 和 MocaConfig, MocaLogFile 一起使用。
moca_config = MocaConfig('test', './test/test.json')
moca_log = MocaLogFile('sample_app', './', config=moca_config, log_level=1)
moca_memory = MocaMemory('main', './', moca_log_file=moca_log, moca_config=moca_config)

# Set a data
# データをセットする
# 设置数据
moca_memory.save('sample', [1, 2, 3, 4], life=20)

# Check data remaining-time.
# {'key': [life, remaining-time]}
# 残り時間の確認。
# {'データ名': [寿命, 残り時間]}
# 查询剩余时间。
# {'数据名': [寿命, 剩余时间]}
moca_memory.get_active_data_list()  # {'sample': [20, 18]}
moca_memory.get_active_data_list()  # {'sample': [20, 17]}
moca_memory.get_active_data_list()  # {'sample': [20, 16]}

# Get Data.(remaining-time will be refresh)
# データ取得。(残り時間がリセットされます)
# 获取数据。(会更新剩余时间)
moca_memory.get('sample', default=None)
moca_memory.get_active_data_list()  # {'sample': [20, 19]}

# With type check
# データ形式チェック
# 数据类型检测
moca_memory.get('sample', list, default=[])

# Use cached data. (load from file automatically)
# キャッシュされたデータの使用。(ファイルから自動ロードされます)
# 使用被缓存的数据。(自动从文件读取)
moca_memory.get_active_data_list()  # {}
moca_memory.get('sample', default=None)
moca_memory.get_active_data_list()  # {'sample': [20, 19]}

# Use Data
# データを使用する
# 使用数据
moca_memory.get('sample', list, default=[])  # [1, 2, 3, 4]
moca_memory.get('sample', list, default=[])[0] = 9
moca_memory.get('sample', list, default=[])  # [9, 2, 3, 4]
moca_memory.get('sample', list, default=[]).append('test')
moca_memory.get('sample', list, default=[])  # [9, 2, 3, 4, 'test']

# Remove from memory and delete file.
# メモリから削除し、ファイルも削除します。
# 从内存删除,并且删除文件。
moca_memory.remove('sample')  # True
moca_memory.get('sample', list, default=[])  # []
# The __init__ method in MocaMemory class.
# MocaMemoryクラスのイニシャライザー
# MocaMemory类的生成器。
def __init__(self,
             name: str,
             cache_dir: Union[Path, str],
             moca_log_file: Optional[MocaLogFile] = None,
             moca_config: Optional[MocaConfig] = None):
    """
    :param name: the name of this instance.
    :param cache_dir: the path of cache directory.
    :param moca_log_file: the instance of MocaLogFile.
    :param moca_config: the instance of MocaConfig

    Raise
        MocaFileError: if can't use this cache directory.
    """

Public Methods

  • def save(key: str, value: Any, overwrite: bool = True, life: int = 300) -> int:
    • Save a data.
    • OK = 200
    • DUPLICATE = 300
    • データを保存。
    • 成功 = 200
    • 重複 = 300
    • 保存数据。
    • 成功 = 200
    • 命名重复 = 300
def save(self,
         key: str,
         value: Any,
         overwrite: bool = True,
         life: int = 300) -> int:
    """
    save a value to the data storage (in memory)
    :param key: key
    :param value: data
    :param overwrite: if same key exists, overwrite it
    :param life: life time (seconds)
    :return: status code
    """
  • def get(key: str, res_type: Any = any, default: Any = None) -> Any:
    • Get data.
    • データ取得。
    • 获取数据。
def get(self,
        key: str,
        res_type: Any = any,
        default: Any = None) -> Any:
    """
    get a value from the data storage.
    :param key: key.
    :param res_type: data type you want to get, if this argument is any, don't check the response type.
    :param default: if can't find the value, or data_type is incorrect, return default value.
    :return: target value or default value.
    """
  • def remove(key: str) -> bool:

    • Remove data from memory and file.
    • データをメモリとファイルから削除します。
    • 从内存和文件删除数据。
  • def save_all_data_to_file() -> Tuple[list, list]:

    • Save all data in this class to cache file.
    • このインスタンスが管理しているすべてのデータをファイルにキャッシュします。
    • 把本实例管理的所有数据缓存到文件。
  • def get_active_data_list() -> Dict[str, list]:

    • Get data info list that is in the memory now.
    • 現在メモリ上にあるデータの情報を返します。
    • 返回现在在内存内的数据的信息。
  • def get_active_key_list() -> List[str]:

    • Get all keys that is in the memory now.
    • 現在メモリ上にあるすべてのデータのキーを返します。
    • 返回现在内存里所有数据的名字。

License

  • MIT License
Copyright 2020.1.17 <el.ideal-ideas: https://www.el-ideal-ideas.com>

Permission is hereby granted, free of charge, 
to any person obtaining a copy of this software 
and associated documentation files (the "Software"),
to deal in the Software without restriction, 
including without limitation the rights to use, copy, 
modify, merge, publish, distribute, sublicense, 
and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH 
THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Other Information

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for moca-memory, version 1.0.5
Filename, size File type Python version Upload date Hashes
Filename, size moca_memory-1.0.5-py3-none-any.whl (10.8 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size moca_memory-1.0.5.tar.gz (11.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page