您的位置:首页 > 数据库 > Redis

Redis 与 Python-redis基本命令备忘

2016-10-27 22:06 387 查看

需求

  笔试题目的项目中遇到多终端登录问题,需要使用缓存机制,之前new_gotit也使用了redis,只需要一些简单的功能,故写一下基本命令以备忘之需。

Redis简介

官方说明:

__

Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

__

蹩脚的中文说明:

来自 http://www.redis.net.cn/

__

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

__

Redis 基本操作

Redis的安装

Ubuntu为例:

sudo apt-get install redis-server


然后终端中输入
redis-cli
测试是否安装成功。

Redis基本命令

原生redis命令因为暂时用不到,就不写这一块了,之后有需求再写。

使用python来操作Redis

python-redis 的安装

pip安装命令:

pip install redis


使用easy_install 安装:

easy_install redis


基本命令

打开交互命令终端,导入redis模块并创建实例对象

>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0)   #如果设置了密码,就加上password=密码


保存key-value对

>>> r.set('foo', 'bar')
True


或者写成:

>>> r['foo'] = 'bar'
True


获得value值

>>> r.get('foo')
'bar'


删除key-value对

>>> r.delete('foo')
True


查看所有数据

>>> r.dbsize() # 查看数据库key的数量,即有多少条数据
1L
>>> r.keys()   # 列出所有键值
['foo']


删除当前数据库的所有数据

>>> r.flushdb()
True
>>> r.dbsize() # 再次查看数据数量
0L


如何存储json类型数据到redis?

比如现在有数据
data = {"ip":"127.0.0.1", "host":"localhost"}
,我们可以将变量
data
作为value写入redis,命令如下:

>>> r.set('key', data)
True


这样就将变量
data
作为
key
的value存入redis了,但是如果我们使用时,

r.get('key')
"{'ip': '127.0.0.1', 'host': 'localhost'}"


会发现,输出的值已经被转换成字符串类型的了,这样我们在python中就无法使用dict来操作,解决方法是将字符串转换成dict:

>>> test_str = r.get('key')
>>> type(test_str)
<type 'str'>
>>> test_dict = eval(test_str)
>>> type(test_dict)
<type 'dict'>
>>> test_dict['ip']
'127.0.0.1'


列表类型的数值如何存?

看了不少博客并没有找到如何直接将list类型的值写入redis的value(之前写入value的都是str类型),暂采取python中list和str相互转换实现吧,之后如果找到更好的办法再更新。

实现:

>>> a = [1, 2, 3, 4]
>>> r.set('list_str',a)
True
>>> b = r.get('list_str')
>>> b
'[1, 2, 3, 4]'
>>> type(b)
<type 'str'>
>>> c = list(eval(b))
>>> c
[1, 2, 3, 4]
>>> type(c)
<type 'list'>


以上。

相关链接

Redis官网

Redis中文版

Python-redis官方介绍

Redis-py Github地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: