redis

简介

redis是一个高性能的key-value非关系型数据库,可以作为消息中间件使用。

五大数据类型

1.string
2.list
3.hash
4.set
5.sorted set
常用命令总结

重要特性

1.管道
客户端可以将多个命令一次发送到服务器,然后服务器处理后返回多个结果。这样可以大大减少网络开销
2.事务
不回滚,但是保证执行的原子性,要么成功,要么失败。
3.分布式锁
分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在分布式系统中,常常需要协调他们的动作,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。
4.地理信息
从3.2版本开始,新增地理信息相关的命令。

链接

1.Linux命令行
redis-cli命令来链接
2.python接口
redis的python接口是redis-py

# 安装
$ sudo pip install redis

#简单示例
>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379, db=0)
>>> r.set('foo', 'bar')
True
>>> r.get('foo')
'bar'

#线程池链接方式
>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
>>> r = redis.Redis(connection_pool=pool)

#使用Unix-sock链接
>>> r = redis.Redis(unix_socket_path='/tmp/redis.sock')

#性能相关。Hiredis是由Redis核心团队维护的C库。Pieter Noordhuis非常友好地创建了Python绑定。使用Hiredis可以在解析Redis服务器的响应时提供高达10倍的速度提升。在检索许多数据时,例如来自LRANGE或SMEMBERS操作,性能提升最为明显。
$ pip install hiredis

#管道可以同时发送多批数据,以提高网络性能
>>> r = redis.Redis(...)
>>> r.set('bing', 'baz')
>>> # Use the pipeline() method to create a pipeline instance
>>> pipe = r.pipeline()
>>> # The following SET commands are buffered
>>> pipe.set('foo', 'bar')
>>> pipe.get('bing')
>>> # the EXECUTE call sends all buffered commands to the server, returning
>>> # a list of responses, one for each command.
>>> pipe.execute()
[True, 'baz']
# 简单用法
>>> pipe.set('foo', 'bar').sadd('faz', 'baz').incr('auto_number').execute()
[True, True, 6]

#发布/订阅
# redis-py包含一个PubSub对象,该对象订阅频道并侦听新消息。创建PubSub对象很简单。
>>> r = redis.StrictRedis(...)
>>> p = r.pubsub()
# 创建PubSub实例后,可以订阅频道和模式。
>>> p.subscribe(' my-first-channel ',' my-second-channel ',...)
>>> p.psubscribe(' my- * ',...)
# PubSub实例现在订阅了那些通道/模式。通过从PubSub实例读取消息可以看到订阅确认。
>>> p.get_message()
{'pattern':无,'type':'subscribe','channel':'my-second-channel','data':1L} 
>>> p.get_message()
{ 'pattern':无,'type':'subscribe','channel':'my-first-channel','data':2L} 
>>> p.get_message()
{'pattern':None,'type' :'psubscribe','channel':'my- *','data':3L}

# 更多的先不写了,详细的在https://github.com/andymccurdy/redis-py

可以在线程之间安全地共享Redis客户端实例。在内部,连接实例仅在命令执行期间从连接池中检索,并在之后直接返回到池。命令执行永远不会修改客户端实例上的状态。

命令

添加数据:set
获得数据:get
是否存在:exists
删除数据:del
修改数据:set
帮助命令:help <命令名称>

你可能感兴趣的:(redis)