• 爬虫基础知识(捌)


    一、Redis基础知识

        Redis的客户端和服务端命令:

          redis-server:服务器命令

            启动一个redis的命令是:redis-server redis.windows.conf

          redis-cli:客户端命令

            启动一个客户端的redis命令:redis-cli -p 端口号

        1、Redis和Memcached相比的独特之处:

              ·Redis可以持久化数据到硬盘,memcached只能做缓存

            ·Redis相比于memcached,其支持的数据类型更多

        2、Redis的优点:

              (1)读写速度快。数据存放在内存中,数据结构类似于HashMap;

            (2)支持丰富的数据类型:string,hash,list,set,sorted;

            (3)支持简单事务:watch;

            (4)丰富的特性:可以用于缓存、消息队列,按key设置过期时间,到期后自动删除;

            (5)支持数据持久化,支持AOF和RDB两种持久化方式,从而进行数据恢复操作,可以有效地防止数据丢失;

            (6)支持主从复制来实现数据备份,主机会自动将数据同步到从机。

        3、Redis目录下的重要文件的意义:

            ·redis-benchmark:性能测试工具

            ·redis-check-aof:日志文件检测工具(比如断点造成日志损坏,可以检测并修复)

            ·redis-check-dump:快照文件检测工具

            ·redis-cli:客户端

            ·redis-server:服务端

            ·redis.windows.conf:Redis配置文件,在启动Redis服务器的时候,必须要指定配置文件,相当于一个配置文件就是一个Redis数据库服务器。

        4、Redis基础命令:

            ·keys *            返回键

            ·keys list*           返回名以list开头的所有键

            ·exists list1         判断键名为list1的是否存在,存在则返回1,不存在返回0

            ·del list1           删除一个键(名为list1)

            ·expire list1 10        设置键名为list1的过期时间为10秒

            ·ttl list1           查看键名为list1的过期时间,若为-1表示已过期或永不过期

            ·move age 1          将键名为age的转移到1数据库中

            ·select 1           表示进入到1数据库中,默认在0数据库

            ·persist age          移除age的过期时间

            ·flushdb            清除当前所在库的所有数据

            ·flushall            清空所有数据

    二、Redis数据类型

        (一)、string字符串(一般用于计数器、缓存):

            1、set:设置key对应的值为string类型的value,如果该key已存在,则覆盖key对应的value值。在Redis中key只能有一个。

              set name lidan

            2、get:根据key获取value值。

              get name

            3、setnx:设置一个不存在的字符串,返回0表示设置失败,已存在。返回1表示设置成功。

              setnx name lindan

            4、setex:设置字符串,同时设置有效期。

              setex color 10 red

            5、setrange:替换字符串,替换什么  从哪里开始(0)  替换成什么。

              setrange email 6 163.com

            6、mset:一次设置多个key-value,返回OK表示设置成功,若存在则替换。

              mset  name1 zs name2 ls

            7、msetnx:一次设置多个不存在的key-value,返回1表示成功,返回0表示失败。

              msetnx name3 kk name4 mm name5 gg

            8、getset:获取原值,并设置新值。

              getset name4 IU

            9、getrange:获取key对应的value的子字符串。

              getrange email 0 4

            10、mget:一次获取多个key对应的value值,不存在返回nil。

              mget name1 name2 name6

            11、incr:对key对应的value做加1操作,并返回新值。

              incr age

            12、incrby:加指定值,可以不存在的时候会自动添加,并认为该key原来的value=0。

              incrby age 9

            13、decr:对key对应的value做减1操作。

              decr height

            14、decrby:对key对应的value减去指定的值。

              decrby height 3

            15、append:对key对应的value字符串追加,返回新字符串的长度。

              append name1 ML

            16、strlen:获取key对应value的长度

              strlen name1

        (二)、hash类型(一般用于缓存):

            hash是一个string类型的filed和value的映射表,它的添加、删除操作都是O(1)。hash特别适合存储对象。相较于对象的每个字段存成单个string类型,将一个对象存储在hash类型中会占用更少的内存,并且可以更方便存取整个对象。

            1、hset:设置hash filed为指定值,若key不存在,则先创建,反之则替换。

              hset user:001 name zs

            2、hget:获取指定filed字段的值。

              hget user:001 name

            3、hsetnx:设置hash filed为指定值,若key不存在,则先创建。若存在则返回0表示设置失败。

              hsetnx user:001 age 1

            4、hmset:同时设置hash的多个file。

              hmset user:002 name mm age 20

            5、hmget:获取全部制定的filed,必须指定获取的key的名称。

              hmget user:002 name age

            6、hincrby:对filed加上指定的值。

              hincrby user:002 age 7

            7、hexists:测试指定的filed是否存在,返回1表示存在,返回0表示不存在。

              hexists user:002 age

            8、hlen:返回指定的hash的filed的数量。

              hlen user:002

            9、hdel:删除指定hash的filed字段,返回1表示删除成功,0表示删除失败。

              hdel user:002 age

            10、hkeys:返回hash的所有filed。

              hkeys user:001

            11、hvals:返回hash的所有value。

              hvals user:002

        (三)、list类型(一般用于时间轴):

            list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。可以通过push、pop操作链表的头部或链表尾部添加元素,这样list既可以作为栈,又可以作为队列。

            1、lpush:在key对应list的头部添加字符串元素,返回list中元素的个数。

              lpush list1 "hello"

            2、lrange:获取list中的元素(0:第一个,-1:最后一个)。

              lrange list1 0 -1

            3、rpush:在key对应的list尾部添加元素。

              rpush list2 10

            4、linsert:在key对应list的特定位置前或后添加字符串。

              linsert list2 before 10 9.5

              linsert list2 after 10 11

            5、lset:更改list中指定下表的元素,返回OK表示设置成功。

              lset list2 1 10.00

            6、lrem:从key对应list中删除n个和value相同的元素(n<0从尾部删除,n=0全部删除,n>0从头部删除)。

              lrem list 1 one

            7、ltrim:保留list中指定范围的数据,其他的都不要了。

              ltrim list2 1 2

            8、lpop:从list的头部删除元素,并返回该元素。

              lpop list

            9、rpop:从list的尾部删除元素,并返回该元素。

            10、rpoplpush:从第一个list的尾部删除元素,并添加到第二个list的头部。

              rpoplpush list1 list

            11、lindex:返回名为key的list中index位置的元素。

              lindex list 1

            12、llen:返回指定key对应list的长度。

              llen list

        (四)、set类型(一般用于点赞):

            set是一个string类型的无序集合,不允许重复。set是通过hash table实现的。添加、删除、查找的复杂度都是O(1)。

            1、sadd:向key对应的set集合中添加元素,返回1表示添加成功,返回0表示失败。

              sadd myset1 one

            2、smembers:查看set集合中的元素。

              smembers myset1

            3、srem:删除key对应set集合中的元素1,返回1表示删除成功0表示失败。

              srem myset1 two

            4、spop:随机删除set中的一个元素并返回该元素。

              spop myset1

            5、sdiff:返回给定set集合的差集(以在前的set集合为标准)。

              sdiff myset1 myset2

            6、sdiffstore:返回所有给定set集合的差集,并将差集添加到另外一个集合中。

              sdiffstore myset3 myset2 myset1

            7、sinter:返回所有给定集合的交集。

              sinter myset2 myset1

            8、sinterstore:返回所有给定集合key的交集,并将结果存为另一个key。

              sinterstore myset4 myset1 myset2

            9、sunion:返回所有给定集合的并集。

              sunion myset1 myset2

            10、sunionstore:返回所有给定集合的并集,并将结果存入另一个集合。

              sunionstore myset5 myset1 myset2

            11、smove:从第一个集合中移除元素并将该元素添加到另一个集合中。

              smove myset5 myset1 two

            12、scard:返回set集合中元素的个数。

              scard myset1

            13、sismember:测试member元素是否是名称为key的set集合,返回1:是,返回0:不是。

              sismember myset1 tree

            14、srandmember:随机返回set集合中的一个元素,但不删除该元素。

              srandmember myset1

        (五)、sorted set(zset)类型(一般用于排行榜):

            sorted set是set的一个升级版,在set基础上增加了一个顺序属性,这一属性在添加元素的时候可以指定,每次指定后,zset会自动重新按新的值挑战顺序。可以理解为有两列的mysql表,一列存value,一列存顺序。操作key理解为zset的名字。

            rank是指下标索引,从0开始;score是指分数。

            1、zadd:向有序集合zset中添加元素并指定顺序,若该元素已存在就更新元素顺序。

              zadd myzset1 1 one

            2、zrange:从zset集合中取元素。withscores为输出元素顺序号。

              zrange myzset1 0 -1 withscores

            3、zrem:删除zset集合中指定的元素。

              zrem myzset1 two

            4、zincrby:若zset中已经存在元素member,则该元素的score增加incrment,否则向该集合中添加该元素,其score的值为increment。

              zincrby myzset1 2 one

            5、zrank:正序方式获取指定元素的索引下标。

              zrank myset1 four

            6、zrevrank:逆序方式获取指定元素的索引下标。

              zrevrank myset1 four

            7、zrevrange:从zset集合中倒序获取元素。

              zrevrange myset1 0 -1 withscores

            8、zrangebyscore:从zset集合中根据score顺序获取元素。

              zrangebyscore myzset1 4 5 withscores

            9、zcount:返回集合中score在给定区间的数量。

              zcount myzset1 3 4

            10、zcard:返回zset集合中所有元素个数。

              zcard myzset1

            11、zremrangebyrank:删除集合中排名(下标)在给定区间的元素。

              zremrangebyrank myzset1 1 2

            12、zremrangebyscore:删除集合中顺序(score值)在给定区间的元素。

              zremrangebyscore myzset1 3 4

  • 相关阅读:
    代码片段:ASCII纯数字文本数据转二进制格式
    Caffe使用CMake编译:Could Not find Boost
    Cannot uninstall '***'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
    Ubuntu 14.04避雷系列:升级python到最新2.x版本
    过程记录:安装原版windows7
    代码片段:Shell脚本实现重复执行和多进程
    代码片段:基于STL实现的读取纯数字文本文件
    E: GPG 错误:http://developer.download.nvidia.com Release: 下列签名无效: NODATA 1 NODATA 2
    软件项目管理复习题要
    html转义字符表
  • 原文地址:https://www.cnblogs.com/lavender1221/p/12350389.html
Copyright © 2020-2023  润新知