zoukankan      html  css  js  c++  java
  • [Database] Redis (1)

      Redis 是一个高性能的key-value内存数据库。 这不仅性能强劲,而且还具有复制、持久化、分片特性。 它支持存储的value类型包括STRING(字符串)、LIST(链表)、SET(集合)、HASH(散列)、ZSET(有序集合)等。redis还支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 提供了Python,Ruby,Erlang,PHP客户端,使用很方便。

    我们用 Python 来联接操作试试

    Python联接代码

    代码
    abeen@localhost:~/mytest$ cat my_redis.py
    #! /usr/bin/env python
    #
    _*_ coding:utf-8 _*_

    import redis

    # Redis 操作调用
    class My_Redis:

    # 初始化配置信息
    def__init__(self):
    self.r
    = redis.Redis(host='192.168.1.3', port=6379, db=0)

    def GetInstance(self):
    return self.r

    def Set(self, object_name, object):
    self.r.set(object_name, object)

    def Get(self, object_name):
    return self.r.get(object_name)

    导入

    In [1]: ls
    my_redis.py
    * my_redis.pyc mytest.py*
    In [
    2]: from my_redis import My_Redis
    In [
    3]: r = My_Redis().GetInstance()

    字符串操作

    代码
    In [4]: r.set('strName','shan shan') //保存字符串
    Out[
    4]: True
    In [
    5]: r.get('strName') //取字符串
    Out[
    5]: 'shan shan'

    In [
    7]: r.exists('strName') //检查是否存在
    Out[
    7]: True

    In [
    8]: r.type('strName') //查看类型
    Out[
    8]: 'string'

    In [
    9]: r.keys() //查看所有keys
    Out[
    9]:['book', 'list', 'set1', 'id', 'list2', 'o', '', 'name', 'a', 'kv', 'b', 's', 'c', 'shanshan', 'strName']

    In [
    10]: r.rename('strName','strNewName')//修改键名
    Out[
    10]: True
    In [
    12]: r.keys()
    Out[
    12]:['book', 'list', 'set1', 'id', 'list2', 'o', '', 'name', 'a', 'kv', 'b', 's', 'c', 'strNewName', 'shanshan']
    In [
    13]: r.get('strNewName')
    Out[
    13]: 'shan shan'

    In [
    14]: r.dbsize()//总键数
    Out[
    14]: 15

    In [
    15]: r.set('abeen','yeah my am abeen')
    Out[
    15]: True
    In [
    16]: r.mget(['strNewName','abeen']) //一次取多个键值
    Out[
    16]: ['shan shan', 'yeah my am abeen']

    In [
    17]: r.getset('abeen','abeen new message')//替换值
    Out[
    17]: 'yeah my am abeen'
    In [
    18]: r.get('abeen')
    Out[
    18]: 'abeen new message'

    列表操作

    代码
    In [5]: r.lpush('listAB','shan shan') //加入值
    Out[
    5]: True
    In [
    6]: r.lpush('listAB','shan shan')
    Out[
    6]: True
    In [
    7]: r.lpush('listAB','shan shan')
    Out[
    7]: True
    In [
    11]: r.lrange('listAB', 0, r.llen('listAB'))//显示
    Out[
    11]: ['shan shan', 'shan shan', 'shan shan']

    In [
    12]: r.lset('listAB', 0, 'abeen') //修改0索引值
    Out[
    12]: True
    In [
    13]: r.lset('listAB',1, 'qiqi')//修改1索引值
    Out[
    13]: True
    In [
    14]: r.lrange('listAB', 0, r.llen('listAB'))
    Out[
    14]: ['abeen', 'qiqi', 'shan shan']

    In [
    15]: r.rpush('listAB','abeen1') //头部插入值
    Out[
    15]: True
    In [
    16]: r.lrange('listAB', 0, r.llen('listAB'))
    Out[
    16]: ['abeen', 'qiqi', 'shan shan', 'abeen1']
    In [
    17]: r.lpush('listAB','abeen2') //尾部插入值
    Out[
    17]: True
    In [
    18]: r.lrange('listAB', 0, r.llen('listAB'))
    Out[
    18]: ['abeen2', 'abeen', 'qiqi', 'shan shan', 'abeen1']

    In [
    19]: r.ltrim('listAB',0,1) //消减值
    Out[
    19]: True
    In [
    20]: r.lrange('listAB', 0, r.llen('listAB'))
    Out[
    20]: ['abeen2', 'abeen']

    In [
    22]: r.lpop('listAB') //尾部移除值
    Out[
    22]: 'abeen2'
    In [
    23]: r.lrange('listAB', 0, r.llen('listAB'))
    Out[
    23]: ['abeen']

    --------------------------------------------------------

    更多相关操作和信息请参考

    Redis

    http://code.google.com/p/redis/wiki/CommandReference

    API Reference

    redis-cheatsheet-v1.pdf

  • 相关阅读:
    Python 学习笔记 11.模块(Module)
    Python 学习笔记 8.引用(Reference)
    Python 学习笔记 9.函数(Function)
    Python 学习笔记 6.List和Tuple
    Python 学习笔记 4.if 表达式
    Python 学习笔记 2.自省
    Python 学习笔记 3.简单类型
    Python 学习笔记 7.Dictionary
    Python 学习笔记 5.对象驻留
    Python 学习笔记 10.类(Class)
  • 原文地址:https://www.cnblogs.com/abeen/p/1773087.html
Copyright © 2011-2022 走看看