redis (remote dictionary server 远程字典服务)

(做缓存) 默认16个数据库

redis安装:

     1,Windows下安装

              1,安装包

              2,压缩包

                        解压--配置环境变量

                       cmd:redis-server   另开一个:redis-cli

                       注册服务:

                       cd到目录

                        redis-server  --service-install  redis.windows.conf 

             2,Ubuntu下安装

                         1,apt/apt-get install redis-server (不推荐,易出错)

                         2,压缩包安装(官方提供的源代码)

                                    1,官网下载压缩包

                                     2,上传压缩包到ubantu  ftp

                                   3,移动压缩包到/usr/local (位置自己定)   (cp  redis-stable.tar.gz  /usr/local )

                                  4,解压压缩包 tar -zxvf redis-stable.tar.gz

                                  5,cd到redis-stable

                                  6,make 编译C/C++的源代码   -->xxx.exe

                                 7,cd src

                                 8,make .install

                                9,退回到redis-stable (cd  ..)

                               10,运行 redis-server  [./redis.conf]

                               11,另开窗口redis-cli

                              vim redis.conf  --> 136行 daemonize yes 保存

                                再次启动:运行:redis-server   [/usr/local/redis-stable/redis.conf]可省略

                                另开:redis-cli  

                                port:6379

支持类型:string   list   set   zset=sorted set(有序集合)    hash

           string:(k-v)

                    增改和获取

                     set k v (可不加引号)

                     get k

                     mset k v k v k v

                      mget k k k 

                     setex  (set expire)   

                      setex  k  10  v  (10秒之后失效,无法get该v)

                       incr age加1 ;  incrby age 5  加5 ;  decr age  减1  ; decrby age 5  减5 

                       append  k  aaa在name的v后拼接aaa 

                      strlen k     k对应v的长度  

                      del key:根据key删除键值对

                      keys *获取所有键  

                       exists  k是否存在  (1存在 0不存在)

                      type  k  k的类型

                      expire  k  10   k设置失效时间 (失效后会消失)

                      ttl  k查看k的有效时间   -2已失效   -1长期有效

            hash:(对象)

                       hset u1 k v      hget k    (单个)

                       hmset  u1 k v k v k v      hmget k k k(多个)

                       hgetall u1 (获取所有键值对)   hkeys u1 (获取所有键)   hvals u1 (获取所有值)

                       hexists u1 k是否存在

                       hlen u1有多少键值对

                        hdel u1 k删除u1 中的某个元素

            list: (string  hash)

                        lpush list1 v1 [v2 v3]左侧增加

                        rpush list1 v1 [v2 v3]右侧增加

                       lrange list1 0 -1查看所有值

                       linsert list1 before/after v1 v2在v1前/后插入v2

                        lset list1index value:设置指定索引的元素的值

                      lpop list1:删除并且获取list1对应的list第一个元素

                      rpop list1:删除并且获取list1对应的list最后一个元素

         set :  (无序储存多个数据)

                        sadd key value [value]:添加多个数据到key集合中

                       smembers key:获取key集合中所有的数据

                        sismember key value:判断value是否在key集合中存在

                        scard key:获取key集合中元素的个数

       zset:(有序储存多个数据)

                        zadd key score value [ score value]:添加多个带权重的数据到key集合中

                         zrange key start stop:获取指定范围中所有的元素

                        zcard key:返回元素的个数

                        zcount key min max:返回score值在min和max之间的数据

                        zscore key member:返回集合中member元素的score值

CAP所有nosql的基础:CAP  {(一致性 可用性  分区容错性)三者无法兼顾(CP/AP)}

       python调用redis:

                     首次:cmd --> pip install redis

                     import  redis

                     r = redis.StrictRedis(host="localhost", port=6379)

                      [  #python操作redis为了效率,如我们一次提交多个数据,可以使用管道完成:

                     pipe = r.pipeline()  #申请管道

                     #在管道中保存数据

                     pipe.set(“id”,5)

                     pipe.set(“k”,”v”)

                     pipe.set(“k1”,”v1”)

                      #提交管道中的数据(必须)

                  Pipe.execute()  ]

                  print(r.get("k").decode(utf-8))

                               .decode(utf-8)---> 将乱码转换为正常值

你可能感兴趣的:(redis (remote dictionary server 远程字典服务))