redis 的基本操作

1. 基本概念

      Redis 是一个高性能的key-value数据库。
      NoSQL:一类新出现的数据库(not only sql);泛指非关系型的数据库,不支持SQL语法

配置
Redis的配置信息在/etc/redis/redis.conf下。
查看
sudo vi /etc/redis/redis.conf

核心配置选项
绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
bind 127.0.0.1
端⼝,默认为6379
port 6379
数据⽂件 : dbfilename dump.rdb

数据⽂件存储路径 : dir /var/lib/redis

⽇志⽂件 : logfile "/var/log/redis/redis-server.log"

数据库,默认有16个 : database 16

2. 连接启动方式

1.启动redis服务器命令: redis-server 配置文件名称 (可以不填,读取默认配置)
2.连接redis客户端命令: redis-cli -h ip地址 -p 端口   -c:连接集群

    如:redis-cli -h 47.101.63.222 -p 56379

3. 连接本地:redis-cli

4. 设置密码:config set requirepass pass_123456

5. 获取密码:config get requirepass

6. 登录:auth pass_123456

7. 切换数据库:

     数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库

      select 10

 阿里云服务器上安装redis: 如何在阿里云服务器上安装Redis?_java_zdc的博客-CSDN博客

3. 基本的数据格式和操作

string类型:
    # 保存:
	设置值:set key value
        (设置键为name值为itcast的数据)
        set name itcast

    设置值,过期时长:setex key seconds value
        (设置键为aa值为aa过期时间为3秒的数据)
        setex aa 3 aa

    设置多个键值: mset key1 value1 key2 value2 ...
        (设置键为'a1'值为'python'、键为'a2'值为'java'、键为'a3'值为'c')
        mset a1 python a2 java a3 c

        
    追加值:append key value
        (向键为a1中追加值' haha')
         append 'a1' 'haha'

    
    # 获取:
    根据键获取值,如果不存在此键则返回nil --  get key
        (获取键'name'的值)
        get 'name'

    根据多个键获取多个值: mget key1 key2 ...
        (获取键a1、a2、a3'的值)
        mget a1 a2 a3
键命令
    
    查找键,参数⽀持正则表达式;--  keys pattern

    1. 查看所有键     keys *

    2. 查看名称中包含 a 的键    keys 'a*'

    3. 判断键是否存在,如果存在返回1,不存在返回0  exists key1

    4. 查看键对应的value的类型  type key

    5. 删除键及对应的值  del key1 key2 ...
         (删除键a2、a3) -- del a2 a3

    6. 设置过期时间,以秒为单位,如果没有指定过期时间则⼀直存在,直到使⽤DEL移除
           expire key seconds

         (设置键'a1'的过期时间为3秒) -- expire 'a1' 3

    7. 查看有效时间,以秒为单位  ttl key
         (查看键'bb'的有效时间) --  ttl 'bb'
hash类型
    ⽤于存储对象,对象的结构为属性、值; 值的类型为string

    1. 设置单个属性  hset key field value
         (设置键 user的属性name为itheima) -- hset user name itheima

    2. 设置多个属性  hmset key field1 value1 field2 value2 ...
         (设置键u2的属性name为itcast、属性age为11)
            hmset u2 name itcast age 11

    3. 获取指定键所有的属性  hkeys key

    4. 获取⼀个属性的值   hget key field
         (获取键u2属性'name'的值)
            hget u2 'name'

    5. 获取多个属性的值  hmget key field1 field2 ...

    6. 获取所有属性的值  hvals key

    7. 删除属性的值: hdel key field
         (删除键'u2'的属性'age')
          hdel u2 age
list类型:
    列表的元素类型为string

    1. 在左侧插⼊数据   lpush key value1 value2 ...

    2. 在右侧插⼊数据   rpush key value1 value2 ..

    3. 在指定元素的前或后插⼊新元素
         linsert key before或after 现有元素 新元素

    3. 查看:
         rpop 右边取出元素(取出后list元素个数减1)
         rpop key  (与 lpush 连用;形成队列操作)
          
         lpop: 左侧取出一个元素,取出后list元素个数减1

    4. 获取: 返回列表⾥指定范围内的元素
        lrange key start stop

            start、stop为元素的下标索引
            索引从左侧开始,第⼀个元素为0
            索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

         (获取键为'a1'的列表所有元素)
            lrange a1 0 -1

    5. 设置指定索引位置的元素值
        lset key index value
            索引从左侧开始,第⼀个元素为0
            索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

           (修改键为'a1'的列表中下标为1的元素值为'z')
             lset a1 1 z 

    6. 删除
       1) 删除指定元素  lrem key count value
            将列表中前count次出现的值为value的元素移除
            count > 0: 从头往尾移除
            count < 0: 从尾往头移除
            count = 0: 移除所有

set类型:
    属性:   ⽆序集合
            元素为string类型
            元素具有唯⼀性,不重复
            说明:对于集合没有修改操作

    1. 增加
    添加元素: sadd key member1 member2 

    2. 获取
    返回所有的元素: smembers key

    3. 删除
    删除指定元素: srem key
      (删除键'a3'的集合中元素'wangwu')
        srem a3 wangwu
zset类型(有序集合):
    属性:sorted set,有序集合
         元素为string类型
         元素具有唯⼀性,不重复
         每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
         说明:没有修改操作 

    1. 增加
       添加元素: zadd key score1 member1 score2 member2
        (向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3)
         zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

    2. 获取
       返回所有的元素: zrange key start stop  
        start、stop为元素的下标索引
        索引从左侧开始,第⼀个元素为0
        索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素 

    3. 删除
       删除指定元素: zrem key member1 member2 ...

       删除权重在指定范围的元素: zremrangebyscore key min max
        (删除集合'a4'中权限在5、6之间的元素)
         zremrangebyscore a4 5 6

4. 安装方式:

        1. 联⽹安装包redis:  pip install redis

        2. 到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装

一步步执行 wget https://github.com/andymccurdy/redis-py/archive/master.zip
unzip master.zip
cd redis-py-master
sudo python setup.py install

5. 与python 交互

1. 引入模块
    
    from redis import *

    (这个模块中提供了StrictRedis对象(Strict严格),⽤于连接redis服务器,并按照不同类型提供 了不同⽅法,进⾏交互操作)

2. 连接 redis 
    (通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认                为6379,db默认为0)

    sr = StrictRedis(host='localhost', port=6379, db=0)
    简写
    sr=StrictRedis()


string-增加
⽅法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #添加键name,值为itheima
        result=sr.set('name','itheima')
        #输出响应结果,如果添加成功则返回True,否则返回False
        print(result)
    except Exception as e:
        print(e)

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

string-获取
⽅法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #获取键name的值
        result = sr.get('name')
        #输出键的值,如果键不存在则返回None
        print(result)
    except Exception as e:
        print(e)

string-修改
⽅法set,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
编写代码如下
from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
        result = sr.set('name','itcast')
        #输出响应结果,如果操作成功则返回True,否则返回False
        print(result)
    except Exception as e:
        print(e)


string-删除
⽅法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返 回0
编写代码如下
from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
        result = sr.delete('name')
        #输出响应结果,如果删除成功则返回受影响的键数,否则则返回0
        print(result)
    except Exception as e:
        print(e)


获取键
⽅法keys,根据正则表达式获取键
编写代码如下
from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #获取所有的键
        result=sr.keys()
        #输出响应结果,所有的键构成⼀个列表,如果没有键则返回空列表
        print(result)
    except Exception as e:
        print(e)

             

你可能感兴趣的:(redis,数据库,sql)