litedis


Namelitedis JSON
Version 3.0.5 PyPI version JSON
download
home_pagehttps://github.com/linsuiyuan/litedis
SummaryLitedis 是一个类似 Redis 的轻量级的、本地的、开箱即用的 NoSQL 数据库
upload_time2025-01-21 14:02:30
maintainerNone
docs_urlNone
authorLinsuiyuan
requires_python>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements pytest invoke sortedcontainers twine
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Litedis



`Litedis` 是一个类似 Redis 的轻量级的本地的 NoSQL 数据库,支持基本的数据结构和操作。和 Redis 最大的不同是,Litedis 开箱即用,无需另开服务器进程。



## 特性

- 实现了基础数据结构及相关操作:
  - STING
  - LIST
  - HASH
  - SET
  - ZSET
- 支持设置过期时间
- 支持 AOF 持久化



## 安装和支持版本

- 使用 pip 安装

```sh
pip install litedis
```

- 支持的 Python 版本

  支持 Python3.8+
  
  

## 使用示例


### 持久化和数据库设置

- Litedis 是默认开启持久化的,可以通过参数进行相关设置。
- Litedis 可以将数据存储到不同的数据库下,可以通过 dbname 参数设置

```python
from litedis import Litedis

# 关闭持久化
litedis = Litedis(persistence_on=False)

# 设置持久化路径
litedis = Litedis(data_path="path")

# 设置数据库名称
litedis = Litedis(dbname="litedis")
```

### STRING 的使用


```python
import time

from litedis import Litedis

litedis = Litedis()

# set and get
litedis.set("db", "litedis")
assert litedis.get("db") == "litedis"

# delete
litedis.delete("db")
assert litedis.get("db") is None

# expiration
litedis.set("db", "litedis", px=100)  # 100毫秒后过期
assert litedis.get("db") == "litedis"
time.sleep(0.11)
assert litedis.get("db") is None
```

### LIST 的使用


```python
from litedis import Litedis

litedis = Litedis()

# lpush
litedis.lpush("list", "a", "b", "c")
assert litedis.lrange("list", 0, -1) == ["c", "b", "a"]
litedis.delete("list")

# rpush
litedis.rpush("list", "a", "b", "c")
assert litedis.lrange("list", 0, -1) == ["a", "b", "c"]
litedis.delete("list")

# lpop
litedis.lpush("list", "a", "b")
assert litedis.lpop("list") == "b"
assert litedis.lpop("list") == "a"
assert litedis.lrange("list", 0, -1) == []
assert not litedis.exists("list")  # 当所有元素被弹出后,相应的 List键 会自动删除
```

### Hash 的使用


```python
from litedis import Litedis

litedis = Litedis()
litedis.delete("hash")

# hset
litedis.hset("hash", {"key1":"value1", "key2":"value2"})
assert litedis.hget("hash", "key1") == "value1"

# hkeys and hvals
assert litedis.hkeys("hash") == ["key1", "key2"]
assert litedis.hvals("hash") == ["value1", "value2"]
```

### SET 的使用


```python
from litedis import Litedis

litedis = Litedis()
litedis.delete("set", "set1", "set2")

# sadd
litedis.sadd("set", "a")
litedis.sadd("set", "b", "c")
members = litedis.smembers("set")
assert set(members) == {"a", "b", "c"}

litedis.sadd("set1", "a", "b", "c")
litedis.sadd("set2", "b", "c", "d")

# inter
result = litedis.sinter("set1", "set2")
assert set(result) == {"b", "c"}

# union
result = litedis.sunion("set1", "set2")
assert set(result) == {"a", "b", "c", "d"}

# diff
result = litedis.sdiff("set1", "set2")
assert set(result) == {"a"}
```

### ZSET 的使用


```python
from litedis import Litedis

litedis = Litedis()
litedis.delete("zset")

# zadd
litedis.zadd("zset", {"a": 1, "b": 2, "c": 3})
assert litedis.zscore("zset", "a") == 1

# zrange
assert litedis.zrange("zset", 0, -1) == ["a", "b", "c"]

# zcard
assert litedis.zcard("zset") == 3

# zscore
assert litedis.zscore("zset", "a") == 1
```



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/linsuiyuan/litedis",
    "name": "litedis",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Linsuiyuan",
    "author_email": "linsuiyuan@icloud.com",
    "download_url": "https://files.pythonhosted.org/packages/e1/fb/04427ad023095d8f9b55751fa3e4531f9f8b60e5c1124357d925a759a302/litedis-3.0.5.tar.gz",
    "platform": null,
    "description": "# Litedis\n\n\n\n`Litedis` \u662f\u4e00\u4e2a\u7c7b\u4f3c Redis \u7684\u8f7b\u91cf\u7ea7\u7684\u672c\u5730\u7684 NoSQL \u6570\u636e\u5e93\uff0c\u652f\u6301\u57fa\u672c\u7684\u6570\u636e\u7ed3\u6784\u548c\u64cd\u4f5c\u3002\u548c Redis \u6700\u5927\u7684\u4e0d\u540c\u662f\uff0cLitedis \u5f00\u7bb1\u5373\u7528\uff0c\u65e0\u9700\u53e6\u5f00\u670d\u52a1\u5668\u8fdb\u7a0b\u3002\n\n\n\n## \u7279\u6027\n\n- \u5b9e\u73b0\u4e86\u57fa\u7840\u6570\u636e\u7ed3\u6784\u53ca\u76f8\u5173\u64cd\u4f5c\uff1a\n  - STING\n  - LIST\n  - HASH\n  - SET\n  - ZSET\n- \u652f\u6301\u8bbe\u7f6e\u8fc7\u671f\u65f6\u95f4\n- \u652f\u6301 AOF \u6301\u4e45\u5316\n\n\n\n## \u5b89\u88c5\u548c\u652f\u6301\u7248\u672c\n\n- \u4f7f\u7528 pip \u5b89\u88c5\n\n```sh\npip install litedis\n```\n\n- \u652f\u6301\u7684 Python \u7248\u672c\n\n  \u652f\u6301 Python3.8+\n  \n  \n\n## \u4f7f\u7528\u793a\u4f8b\n\n\n### \u6301\u4e45\u5316\u548c\u6570\u636e\u5e93\u8bbe\u7f6e\n\n- Litedis \u662f\u9ed8\u8ba4\u5f00\u542f\u6301\u4e45\u5316\u7684\uff0c\u53ef\u4ee5\u901a\u8fc7\u53c2\u6570\u8fdb\u884c\u76f8\u5173\u8bbe\u7f6e\u3002\n- Litedis \u53ef\u4ee5\u5c06\u6570\u636e\u5b58\u50a8\u5230\u4e0d\u540c\u7684\u6570\u636e\u5e93\u4e0b\uff0c\u53ef\u4ee5\u901a\u8fc7 dbname \u53c2\u6570\u8bbe\u7f6e\n\n```python\nfrom litedis import Litedis\n\n# \u5173\u95ed\u6301\u4e45\u5316\nlitedis = Litedis(persistence_on=False)\n\n# \u8bbe\u7f6e\u6301\u4e45\u5316\u8def\u5f84\nlitedis = Litedis(data_path=\"path\")\n\n# \u8bbe\u7f6e\u6570\u636e\u5e93\u540d\u79f0\nlitedis = Litedis(dbname=\"litedis\")\n```\n\n### STRING \u7684\u4f7f\u7528\n\n\n```python\nimport time\n\nfrom litedis import Litedis\n\nlitedis = Litedis()\n\n# set and get\nlitedis.set(\"db\", \"litedis\")\nassert litedis.get(\"db\") == \"litedis\"\n\n# delete\nlitedis.delete(\"db\")\nassert litedis.get(\"db\") is None\n\n# expiration\nlitedis.set(\"db\", \"litedis\", px=100)  # 100\u6beb\u79d2\u540e\u8fc7\u671f\nassert litedis.get(\"db\") == \"litedis\"\ntime.sleep(0.11)\nassert litedis.get(\"db\") is None\n```\n\n### LIST \u7684\u4f7f\u7528\n\n\n```python\nfrom litedis import Litedis\n\nlitedis = Litedis()\n\n# lpush\nlitedis.lpush(\"list\", \"a\", \"b\", \"c\")\nassert litedis.lrange(\"list\", 0, -1) == [\"c\", \"b\", \"a\"]\nlitedis.delete(\"list\")\n\n# rpush\nlitedis.rpush(\"list\", \"a\", \"b\", \"c\")\nassert litedis.lrange(\"list\", 0, -1) == [\"a\", \"b\", \"c\"]\nlitedis.delete(\"list\")\n\n# lpop\nlitedis.lpush(\"list\", \"a\", \"b\")\nassert litedis.lpop(\"list\") == \"b\"\nassert litedis.lpop(\"list\") == \"a\"\nassert litedis.lrange(\"list\", 0, -1) == []\nassert not litedis.exists(\"list\")  # \u5f53\u6240\u6709\u5143\u7d20\u88ab\u5f39\u51fa\u540e\uff0c\u76f8\u5e94\u7684 List\u952e \u4f1a\u81ea\u52a8\u5220\u9664\n```\n\n### Hash \u7684\u4f7f\u7528\n\n\n```python\nfrom litedis import Litedis\n\nlitedis = Litedis()\nlitedis.delete(\"hash\")\n\n# hset\nlitedis.hset(\"hash\", {\"key1\":\"value1\", \"key2\":\"value2\"})\nassert litedis.hget(\"hash\", \"key1\") == \"value1\"\n\n# hkeys and hvals\nassert litedis.hkeys(\"hash\") == [\"key1\", \"key2\"]\nassert litedis.hvals(\"hash\") == [\"value1\", \"value2\"]\n```\n\n### SET \u7684\u4f7f\u7528\n\n\n```python\nfrom litedis import Litedis\n\nlitedis = Litedis()\nlitedis.delete(\"set\", \"set1\", \"set2\")\n\n# sadd\nlitedis.sadd(\"set\", \"a\")\nlitedis.sadd(\"set\", \"b\", \"c\")\nmembers = litedis.smembers(\"set\")\nassert set(members) == {\"a\", \"b\", \"c\"}\n\nlitedis.sadd(\"set1\", \"a\", \"b\", \"c\")\nlitedis.sadd(\"set2\", \"b\", \"c\", \"d\")\n\n# inter\nresult = litedis.sinter(\"set1\", \"set2\")\nassert set(result) == {\"b\", \"c\"}\n\n# union\nresult = litedis.sunion(\"set1\", \"set2\")\nassert set(result) == {\"a\", \"b\", \"c\", \"d\"}\n\n# diff\nresult = litedis.sdiff(\"set1\", \"set2\")\nassert set(result) == {\"a\"}\n```\n\n### ZSET \u7684\u4f7f\u7528\n\n\n```python\nfrom litedis import Litedis\n\nlitedis = Litedis()\nlitedis.delete(\"zset\")\n\n# zadd\nlitedis.zadd(\"zset\", {\"a\": 1, \"b\": 2, \"c\": 3})\nassert litedis.zscore(\"zset\", \"a\") == 1\n\n# zrange\nassert litedis.zrange(\"zset\", 0, -1) == [\"a\", \"b\", \"c\"]\n\n# zcard\nassert litedis.zcard(\"zset\") == 3\n\n# zscore\nassert litedis.zscore(\"zset\", \"a\") == 1\n```\n\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Litedis \u662f\u4e00\u4e2a\u7c7b\u4f3c Redis \u7684\u8f7b\u91cf\u7ea7\u7684\u3001\u672c\u5730\u7684\u3001\u5f00\u7bb1\u5373\u7528\u7684 NoSQL \u6570\u636e\u5e93",
    "version": "3.0.5",
    "project_urls": {
        "Homepage": "https://github.com/linsuiyuan/litedis"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "09735c06008487f1ee933effd79f22142a6caab8cbe35bf6fbf53b927728254f",
                "md5": "7c1cc1b50c6a78731f1ed585e8ad43b2",
                "sha256": "70689f57464c086aaa429ec7aae911df256572728313575129ecab39f73ddddc"
            },
            "downloads": -1,
            "filename": "litedis-3.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7c1cc1b50c6a78731f1ed585e8ad43b2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 30301,
            "upload_time": "2025-01-21T14:02:28",
            "upload_time_iso_8601": "2025-01-21T14:02:28.639389Z",
            "url": "https://files.pythonhosted.org/packages/09/73/5c06008487f1ee933effd79f22142a6caab8cbe35bf6fbf53b927728254f/litedis-3.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e1fb04427ad023095d8f9b55751fa3e4531f9f8b60e5c1124357d925a759a302",
                "md5": "c34fe34af409bb038c2db79b14a81992",
                "sha256": "4e0b827ab13c87869dc8c2b83b2dd8fb9becdceed78cebf12a240f80a4e08bb8"
            },
            "downloads": -1,
            "filename": "litedis-3.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "c34fe34af409bb038c2db79b14a81992",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 24343,
            "upload_time": "2025-01-21T14:02:30",
            "upload_time_iso_8601": "2025-01-21T14:02:30.012842Z",
            "url": "https://files.pythonhosted.org/packages/e1/fb/04427ad023095d8f9b55751fa3e4531f9f8b60e5c1124357d925a759a302/litedis-3.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-21 14:02:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "linsuiyuan",
    "github_project": "litedis",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "pytest",
            "specs": [
                [
                    "~=",
                    "8.3.3"
                ]
            ]
        },
        {
            "name": "invoke",
            "specs": [
                [
                    "~=",
                    "2.2.0"
                ]
            ]
        },
        {
            "name": "sortedcontainers",
            "specs": [
                [
                    "~=",
                    "2.4.0"
                ]
            ]
        },
        {
            "name": "twine",
            "specs": [
                [
                    "~=",
                    "6.0.1"
                ]
            ]
        }
    ],
    "lcname": "litedis"
}
        
Elapsed time: 0.37432s