zoukankan      html  css  js  c++  java
  • redis 使用

    redis 安装之前有写过。这里就记录下redis的使用,方便以后查看。

    1.打开redis服务
    $ redis-server

    2.进入redis
    $ redis-cli
    重新打开一个terminal。

    3.使用python来操作redis用法

    https://blog.csdn.net/jiede1/article/details/79807044

    4.常用命令:

    1.访问和查看
    > help           # 命令行的帮助
    > keys *         # 查看所有的key列表
    > info           # 查看服务器信息。如占用系统内存,看其中的used_memory_human值
    > select 2       # 切换到数据库2
    
    2.增加字符串和数字记录
    
    > set key1 "hello"       # 增加一条键值为key1,值为"hello"的字符串记录
    > get key1               # 获取记录值
    > set key2 1             # 增加一条数字记录key2
    > INCR key2              # 让数字自增
    
    3.列表记录命令
    
    > LPUSH mylist a          # 增加一个列表记录mylist
    > LPUSH mylist b          # 从左边插入列表
    > RPUSH mylist c          # 从右边插入列表
    > LRANGE mylist 0 3       # 输出列表记录,按从左到右的顺序从第0条读到第3条数据,一共四条数据。
    
    
    4.使用连接池连接到Redis
    >>> pool = redis.ConnectionPool(host='192.168.56.100', port=6379)
    >>> conn = redis.Redis(connection_pool=pool)
    >>> conn.set('hello','world')
    True
    >>> conn.get('hello')
    b'world'
    
    5.String
    参数	描述
    ex	过期时间(秒)
    px	过期时间(毫秒)
    nx	如果设置为True,则只有name不存在时,当前set操作才执行
    xx	如果设置为True,则只有name存在时,岗前set操作才执行
    
    #1.
    setex(name, value, time)
    设置过期时间/秒
    >>> conn.setex('k','v',1)
    True
    
    #2.
    psetex(name, time_ms, value)
    设置过期时间/毫秒
    >>> conn.psetex('k',10,'v')
    True
    
    #3.
    mset(*args, **kwargs)
    同时设置多个key/value
    
    >>> conn.mset(k1='v1', k2='v2')
    True
    >>> conn.mset({'k1':'v1', 'k1':'v1'})
    True
    
    #4.
    mget(keys, *args)
    获取多个值(args必须是string格式)
    >>> conn.mget('k1','k2')
    [b'v1', b'v2']
    # 传入列表
    >>> conn.mget(['name','url'])
    [b'ansheng', b'https://blog.ansheng.me']
    
    
    #5. 
    getrange(key, start, end)
    
    通过索引的方式来获取value的值
    
    >>> conn.set('key','value')
    True
    >>> conn.getrange('key', 1, 4)
    b'alue'
    
    #6.
    setrange(name, offset, value)
    
    根据索引修改value
    
    >>> conn.set('n','123456789')
    True
    >>> conn.setrange('n', 0, 'a')
    9
    >>> conn.get('n')
    b'a23456789'
    
    #7.
    strlen(name)
    
    获取value的长度
    
    >>> conn.set('name','安生')
    True
    >>> conn.strlen('name')
    6
    
    #8.
    incr(name, amount=1)
    对name的value进行自增,如果name不存在则创建,否则自增
    >>> conn.get('number')
    >>> conn.incr('number')
    1
    >>> conn.get('number')
    b'1'
    >>> conn.incr('number')
    2
    >>> conn.incr('number', 10)
    12
    
    #9.
    decr(name, amount=1)
    自减,同自增一样,如果进行自减的value不是整数就报错
    
    >>> conn.set('n', 10)
    True
    >>> conn.decr('n')
    9
    >>> conn.decr('n', 9)
    0
    
    #10.
    incrbyfloat(name, amount=1.0)
    同上,支持浮点数自增
    
    >>> conn.incrbyfloat('number', 1.5)
    13.5
    >>> conn.incrbyfloat('number', 1.1)
    14.6
    
    #11.
    append(key, value)
    在value后面追加内容
    >>> conn.set('blog','https://blog.ansheng.me')
    True
    >>> conn.append('blog','/')
    26
    >>> conn.get('blog')
    b'https://blog.ansheng.me/'
    
    6.LIST
    
    ##1
    lpush(name, *values)
    在最左边添加值
    >>> conn.lpush('li', 11,22,33)
    3
    >>> conn.lindex('li', 0)
    b'33'
    
    ##2 rpush(name, *values)  在最右边添加值
    >>> conn.rpush('lli', 11,22,33)
    3
    >>> conn.lindex('lli', 0)
    b'11'
    错误情况:
    >>>conn.rpush('newlist',[7,5,'a'])
    
    >>> redis.exceptions.DataError: Invalid input of type: 'list'. Convert to a byte, string or number first.
    value的格式不能是list,元组和字典等格式。
    
    ##3  删除元素
    > lrem(key count value)
    从key对应list中删除count个和value相同的元素。count为0时候删除全部,count为正,则删除匹配count个元素,如果为负数,则是从右侧扫描删除匹配count个元素。复杂度是O(N),N是List长度,因为List的值不唯一,所以要遍历全部元素,而Set只要O(log(N))。
    
    > lpop key 
    从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误。
    
    > rpop key
    同上,删除key右侧第一个元素
    
    >ltrim(name, start, end)
    在name对应的列表中移除没有在start-end索引之间的值
    
    ##4 lindex(name, index)   获取name中对应索引的值
    >>> conn.lindex('li', 0)
    b'aa'
    
    ##5 llen(key)
    获取某key对应的列表中的元素个数。
    >>> conn.llen('li')
    5
    
    ##6 linsert(name, where, refvalue, value)   在name的某一个值前面或者后面插入一个新值
    原始的列表value是
    0
    1
    2
    4
    6
    >>> conn.linsert('li','AFTER','11','cc')
    6
    
    ##7 lset(name, index, value)
    
    对name中index索引位置的值进行重新赋值
    
    >>> conn.lindex('li', 4)
    b'cc'
    >>> conn.lset('li', 4, 'hello')
    True
    >>> conn.lindex('li', 4)
    b'hello'
    

    Python标准库系列之Redis模块 : http://python.jobbole.com/87305/
    Python操作Redis,你要的都在这了! : https://cloud.tencent.com/developer/article/1151834

  • 相关阅读:
    zookeeper配置
    redis前端启动和后台启动的区别
    SpringMVC接受JSON参数详解及常见错误总结我改
    SpringMVC @RequestBody接收Json对象字符串
    spring MVC 如何接收前台传入的JSON对象数组
    springMVC 接收json字符串参数
    mysql数据库user表host字段的%问题
    mysql.user表中Host为%的含义
    开店攻略: 零售店铺经营的三大原则
    开店攻略: 如何巧妙接近顾客
  • 原文地址:https://www.cnblogs.com/plusUltra/p/10918589.html
Copyright © 2011-2022 走看看