一、Redis数据库

1、redis 是一个开源的使用 ANSI  C语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化(周期性的把内存中的数据写入到硬盘中,重启的时候再次加载进行使用)的日志型、Kye - Value数据库

2、redis 也被称为数据结构服务器,因为它的 value 可以是字符串、哈希、列表、集合、有序集合等类型

3、redis 支持数据的备份,即 master-slave 模式的数据备份

4、基本的数据结构:

    string:字符串          list:列表                                                  hash:散列     

    set:集合                   sorted  set(zset):有序集合

5、redis 连接

    本地连接: redis -cli 

    远程连接linux: redis -cli  主机地址 -p  6379

 

二、 redis数据类型——string字符串

1、设置 key - value    (key 的命名规范:不允许出现空格和 \n ( 换行 ),其余大部分字符都可以使用)

      设置键值:set   key   value  

      一次设置多个键值:mset   key1  value1  key2  value2   ......       (键值之间,使用空格隔开)

      获取键值:get   key

      一次获得多个 key 的值:mget  key1   key2   key3   (key 与 key 之间使用空格隔开)

   三、python数据库:redis数据库

2、incr、decr

  incr 做自增操作,可以对某个 key 的 value 进行 +1操作

  decr 做自减操作,可以对某个 key 的 value 进行 -1操作

   三、python数据库:redis数据库

3、incrby、decrby  :指定增加 / 减少的数值

   三、python数据库:redis数据库

4、keys  *  获取 redis 中所有的key

   三、python数据库:redis数据库

5、mysql 数据在 redis 中的存储格式

   Mysql数据表使用行和列的组合储存数据,以【it_user】表为例

id usename email
1 asion [email protected]
2 makr [email protected]

 ①如果需要把上面的 mysql 的数据存储到 redis 里面,存储的 key 如何命名,一般需要分如下几步来操作:

    a:将 mysql 的表名作为 redis 的 key 的第一部分 (it_user)

    b:将 mysql 的表的主键名放在上面的前缀之后,作为 key 的第二部分,使用冒号分隔(it_user:id)

    c:对应记录的主键值作为 key 的第三部分(it_user:id:1 )

    d:将 mysql 里面的其他的字段作为 key 的第四部分(it_user:id:1 :username)

 ②把上面 mysql 表里面的记录保存在 redis:

     ⑴ 存储第一条数据:

    三、python数据库:redis数据库

     ⑵ 存储第二条数据:

    三、python数据库:redis数据库

     ⑶ 最终在 redis 中的储存如下:

     三、python数据库:redis数据库

   ③获取刚刚储存的信息

     三、python数据库:redis数据库

6、exists   key    判断指定键是否存在,存在返回1,不存在返回 0

三、python数据库:redis数据库

7、type   key     返回指定键的数值类型

  三、python数据库:redis数据库

8、del   key1  key2   key3     删除指定键,可以删除一个也可以删除多个,键与键之间用空格隔开

三、python数据库:redis数据库

9、rename   key   newkey    重命名

三、python数据库:redis数据库

10、dbsize   返回当前数据库中 key 的数量

三、python数据库:redis数据库

11、expire   key   seconds   为 key 指定过期时间,单位为 s,当 key 过期后,会被自动删除

         ttl   key    返回 key 的剩余过期时间

    如图:创建一个 color 键,指定它的过期时间为10s,10s后自动删除, - 2表示已过期 2s,此时 color 键已经被删除

三、python数据库:redis数据库

12、 select   index    切换数据库,redis 共有16个数据库,索引值为 0 - 15,默认使用 db-0 数据库,超出会报错

三、python数据库:redis数据库

13、move  key  index   将 key 从当前数据库移动到指定数据库

三、python数据库:redis数据库

14、 flushdb   删除当前数据库中所有的 key

          flushall   删除所有数据库中所有的 key

三、python数据库:redis数据库

三、python数据库:redis数据库

15、append   key   value    给指定的 key 追加 value(原 value 会被保留

三、python数据库:redis数据库

16、substr  key   start   end    对指定的 key 值进行截取,返回截取过的 value  (对 key - value 没有影响)

三、python数据库:redis数据库

 

 

三、 redis数据类型——list列表类型

1、list 类型其实就是一个双向链表,通过 push,pop 操作,从链表的头部或者尾部添加或删除元素,这使得 list 既可以用作栈,也可以用作队列

2、lpush 、rpush 、lrange 

      lpush   key   value    :向链表的头部放入数据            rpush   key   value    :向链表的尾部放入数据

      lrange   key   start   stop  :获取列表的信息, 0 -1 表示获取该 list 的全部信息

三、python数据库:redis数据库

3、lpop 、rpop

      lpop    key    :在链表的左侧弹出第一个数据(弹出链表的头部数据)

      rpop    key   :在链表的右侧弹出最后一个数据(弹出链表的尾部数据)

三、python数据库:redis数据库

三、python数据库:redis数据库

4、llen   key    :返回 key 对应的 list 的长度,若 key 不存在则返回 0,若 key 对应的数据类型不是 list 返回错误

三、python数据库:redis数据库

5、ltrim   key   start    stop      :截取 list ,保留指定区间内的元素,其余元素删除

三、python数据库:redis数据库

 

 

四、redis数据类型——set集合类型

1、redis 里面的 set 集合类型是 string 类型的无序集合,被称为无序集合类型

2、集合的三个特点:无序性、唯一性、确定性

3、sadd   key   member    :添加一个 string 元素到 key 对应的 set 集合中,若添加成功则返回 1,若该元素已存在,则添加失败,返回 0

三、python数据库:redis数据库

4、smembers   key   :获取集合里面的元素

三、python数据库:redis数据库

5、srem   key   member   :移除集合中的某个元素,移除成功返回 1 

三、python数据库:redis数据库

6、spop   key   :随机移除集合中的某个元素,并返回删除的元素

三、python数据库:redis数据库

7、sismember  key   member: 判断元素是否存在集合中,存在返回 1,不存在返回 0

三、python数据库:redis数据库

8、scard   key :返回集合中元素个数

三、python数据库:redis数据库

9、smove   key1   key2   member:将集合1中的指定元素移除给集合2,成功则返回 1

三、python数据库:redis数据库

10、集合运算:

   sinter       key1   key 2    求交集

   sunion    key1    key2    求并集

   sdiff         key1    key2    求差集

11、实例应用: redis 里面的集合一般用于社交类型的网站的好友关系展示,如:好友推荐,显示共同好友等

   ①首先设置四个用户:aaa、bbb、ccc、ddd 以及他们的邮箱信息

  三、python数据库:redis数据库

三、python数据库:redis数据库

   ②设置好友集合: 设定 03 号与 01、02 号为好友,04 号与 02 号为好友

  三、python数据库:redis数据库

   ③求出好友关系:

   求 03 号与 04 号的共同好友(交集):

   三、python数据库:redis数据库

   求 03 号 与 04 号的全部好友(并集):

   三、python数据库:redis数据库

   通过 03  号向 04 号推荐好友(差集):

  三、python数据库:redis数据库

 

 

五、redis数据类型——zset集合类型(sorted   set)

1、与 set 一样,zset 也是 string 类型元素的集合,不同的是,set 集合中的元素是无序的,而在 zset 集合中,每个元素都会关联一个权,通过权值可以有序的获取集合中的元素,所以 zset 被称为有序集合

2、可以利用 zset 的特点,根据回复量,获取热门信息

3、zadd   key   权   member  :向集合中添加元素,并设置权重

三、python数据库:redis数据库

三、python数据库:redis数据库

4、zrange   key   start    stop  :返回指定区间的元素,按照权重,升序排列

三、python数据库:redis数据库

5、zrevrange   key   start    stop  :返回指定区间的元素,按照权重,降序排列

三、python数据库:redis数据库

6、zremrangebyrank   key     start   stop : 删除指定区间的元素(按权值大小升序排列,然后删除指定区间的元素)

三、python数据库:redis数据库

7、zrank   key   member :返回指定元素在集合中的索引值,集合中元素按照权重,升序排列

   将上一步操作删除的元素添加上,并重新赋予权值

三、python数据库:redis数据库

三、python数据库:redis数据库

8、zrevrank   key   member :返回指定元素在集合中的索引值,集合中的元素按照权重,降序排列

三、python数据库:redis数据库

9、zcard   key  :返回集合中的元素个数

三、python数据库:redis数据库

10、zscore   key   member  :  返回指定元素的权重值

三、python数据库:redis数据库

11、zrange   key   start   stop   withscores  :返回指定区间的元素以及他们的权重值

三、python数据库:redis数据库

12、zincrby   key   increment   member  :按照 increment 幅度,增加对应的 member 的权值,并返回增加后的新权值

三、python数据库:redis数据库

13、zrem   key   member  :删除指定元素,删除成功返回 1,删除失败(元素不存在)返回 0

三、python数据库:redis数据库

 

 

六、redis数据类型——hash类型

1、redis 里面的 hash 是一个 string 类型的 field 和 value 的映射表,特别适合用于存储对象

    储存格式类似于: key = array ( " field " => " value " )

2、hset    key   field   value  :设置单个值

      hget    key   field  :获取单个值

三、python数据库:redis数据库

三、python数据库:redis数据库

3、hmset   key   field1   value1    field2   value2   .......   :设置多个值,使用空格隔开

      hgetall    key   :获取 key 中全部的 hash 数据

      hmget    key    field1   field2 ..... :获取多个值

三、python数据库:redis数据库

三、python数据库:redis数据库

三、python数据库:redis数据库

4、hkeys   key   :获取 key 中全部的 field

三、python数据库:redis数据库

5、hvals   key   :获取 key 中全部的 value

三、python数据库:redis数据库

6、hlen   key   :获取 kes 中 field 的数量

三、python数据库:redis数据库

7、hdel    key    field :删除指定的 field,对应的 value 也会被删除,删除成功返回 1

三、python数据库:redis数据库

8、hexists    key   field   :判断 key 对应的 field 是否存在,存在返回 1 ,不存在返回 0

三、python数据库:redis数据库

9、hincrby    key   field   increment   :给指定的字段的整数值,加上增量 increment,若指定增加的字段不是整数型,会报错

三、python数据库:redis数据库

三、python数据库:redis数据库

 

 

七、python 与 redis 交互

三、python数据库:redis数据库

三、python数据库:redis数据库

三、python数据库:redis数据库

三、python数据库:redis数据库

运行结果:

三、python数据库:redis数据库

三、python数据库:redis数据库

三、python数据库:redis数据库

三、python数据库:redis数据库

 

 

 

 

 

 

 

 

 

 

 

相关文章: