我尝试了一下Redis入门和在Python中连接Redis

首先

由于目前可能存在误解等情况,因此只写了引言部分。如果您想了解更多信息,请查看最后提供的有用参考文章。

起因 (qǐ

经理:这次的修改涉及Redis这方面,所以在测试时也请你负责相关部分!
!?
我对Redis这些只知道个名字而已…看来必须得学习一下了…

Redis是什么?

搜索一下,Dotinstall上有关于Redis入门的视频!我是会员,所以要好好利用它。
通过观看视频后,对Redis的理解有了一部分。

    • データをマトリクスではなく、KVS(Key-Value Store)で扱う

 

    • インメモリデータベースなので永続化しないでRedisを落とすとデータが消える

 

    • デフォルトでDB番号0〜15で分けられている(DB名はない)

 

    データ構造は String, List, Set, Sorted set, Hash

基本的数据的读写命令是什么?

$ redis-cli              # Redisサーバーに接続
(以降Redisサーバー接続後)
> exit                 # Redisクライアント終了
> shutdown               # Redisサーバーを落とす
> select DB番号            # DB切り替え

> set key value            # Stringデータのセット
> get key               # Stringデータの取得

> rpush key value          # Listデータを末尾にセット(先頭はlpush)
> lrange key 開始index 終了index  # Listデータの取得。index全指定は 0 -1

> sadd key value           # Setデータのセット
> smembers key            # Setデータの取得

> zadd key score value       # Sorted setデータのセット
> zrange key 開始index 終了index  # Sorted setデータの取得

> hset key field value       # Hashデータのセット
> hkeys key              # Hashデータのfieldの取得
> hvals key              # Hashデータのvalueの取得
> hgetall key             # Hashデータのfieldとvalueの取得

> keys *                # key一覧の取得
> type key               # keyのデータタイプを確認

好的。那么就马上进行实验吧。
但是在不太理解的情况下,我不想弄脏本地环境,所以我们决定在Docker上搭建Redis服务器。

用Docker启动Redis服务器。

$ docker run -p 6379:6379 redis

尽管如上所述,Redis服务器将会启动,但由于未进行持久化操作,因此关闭服务器会导致数据消失。

$ docker run --name redis -p 6379:6379 -v [ローカルのパス]:/data redis redis-server --appendonly yes

如果使用–appendonly yes选项,Redis的操作将被追加到appendonly.aof文件中进行设置。这样一来,即使Docker关闭,数据也会被保留。对于Docker,文件会在Docker内的/data上创建,因此使用-v选项将其与本地连接以进行文件输出。然后可以通过在$ redis-cli中输入> shutdown来停止Docker中的Redis服务器。在这种情况下,Docker容器将保留,因此应使用$ docker rm ContainerID来删除Redis容器。如果不删除容器,再次尝试使用docker run启动Redis服务器将会导致错误。

日本语变成乱码了!

我立即连接到Docker的Redis服务器并进行了尝试。

> set json '{"message": null,"results": [{"address1": "東京都","address2": "千代田区","address3": "丸の内","kana1": "トウキョウト","kana2": "チヨダク","kana3": "マルノウチ","prefcode": "13","zipcode": "1000005"}],"status": 200}'
> get json

"{\"message\": null,\"results\": [{\"address1\": \"\xe6\x9d\xb1\xe4\xba\xac\xe9\x83\xbd\",\"address2\": \"\xe5\x8d\x83\xe4\xbb\xa3\xe7\x94\xb0\xe5\x8c\xba\",\"address3\": \"\xe4\xb8\xb8\xe3\x81\xae\xe5\x86\x85\",\"kana1\": \"\xef\xbe\x84\xef\xbd\xb3\xef\xbd\xb7\xef\xbd\xae\xef\xbd\xb3\xef\xbe\x84\",\"kana2\": \"\xef\xbe\x81\xef\xbe\x96\xef\xbe\x80\xef\xbe\x9e\xef\xbd\xb8\",\"kana3\": \"\xef\xbe\x8f\xef\xbe\x99\xef\xbe\x89\xef\xbd\xb3\xef\xbe\x81\",\"prefcode\": \"13\",\"zipcode\": \"1000005\"}],\"status\": 200}"

哇!乱码了!(这是在zipcloud郵便编码搜索API中随意获得的JSON数据)
据我调查,似乎只需加上–raw选项连接Redis服务器,即可避免乱码问题。

$ redis-cli --raw
> get json

{"message": null,"results": [{"address1": "東京都","address2": "千代田区","address3": "丸の内","kana1": "トウキョウト","kana2": "チヨダク","kana3": "マルノウチ","prefcode": "13","zipcode": "1000005"}],"status": 200}

哎呀,虽然避免了乱码问题,但是JSON还是不好读啊…查了一下,似乎有一个名为Keylord的Redis图形用户界面客户端还不错,但是要收费!3592日元!太贵了!
哎呀,哎呀…想想也有JSON库,或许可以尝试用Python来编写客户端。

用Python连接Redis

与Redis服务器的连接

import redis
pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
r = redis.StrictRedis(connection_pool=pool)

可以不使用连接池,而是使用r = redis.StrictRedis(host=’localhost’, port=6379, db=0)进行连接。但是使用连接池连接速度更快,而且不需要关闭连接,所以更好。连接后的Redis操作是什么?

r.set('key', 'value')
r.get('key')
r.type('key')
r.keys()

这个几乎和redis-cli一样。(获取键的列表有点不同)
这个很简单!因此,我将尝试格式化刚刚的JSON。

import json
js = r.get('json')
js = json.loads(js)
js = json.dumps(js, indent = 2, ensure_ascii = False)
print(js)

{
  "message": null,
  "results": [
    {
      "address1": "東京都",
      "address2": "千代田区",
      "address3": "丸の内",
      "kana1": "トウキョウト",
      "kana2": "チヨダク",
      "kana3": "マルノウチ",
      "prefcode": "13",
      "zipcode": "1000005"
    }
  ],
  "status": 200
}
スクリーンショット 2019-02-22 1.44.03.png

总结

如果告诉经理,听说他会给我买Keylord。在公司里,嗯?不是多此一举吗?

总结:2

最後在測試進行時,開發人員幫忙將數據注入到Redis中。很方便也很享受學習的機會。

我们正在招聘!

我正在开发AI聊天机器人。如果您有兴趣,请随时通过Wantedly页面与我联系!

参考文献。

「ドットインストール Redis入門」は、Pythonを使ってRedisを扱う方法(redis-pyの基本)を学ぶことができます。また、Unicodeで日本語を含むJSON文字列を取得することもできます。さらに、Pythonで取得したJSON形式の文字列をRedisに入れて、それを辞書型に登録する方法も学びます。

广告
将在 10 秒后关闭
bannerAds