redis 学习(未完)

1.linux安装redis

1.1 CentOS7安装redis

1.查看IP:ip add

2.修改/etc/sysconfig/network-scripts/ifcfg-enp... 用vi将ONBOOT=no改成ONBOOT=yes 重启shutdown -r

3.未安装过先安装wget:yum -yinstall wget

4.未安装过先安装tcl: yum install tcl

4.tar zxvf redis-3.2.8.tar.gz

5.cd redis-3.2.8

6.make

       (1)make报错:cc:commondnot found 安装gcc:yum install gcc

       (2)make报错:zmalloc.h:50:31执行 makeMALLOC=libc

7.make install

8.make test 测试redis是否编译正确

9.启动redis服务

(1)复制 redis目录的utils文件夹下redis_init_script脚本到/etc/init.d

(2)重命名redis_init_script 为redis或者redis_端口号

       (3)建立目录

              /etc/redis        存放redis配置文件

              /var/redis/端口号   存放redis持久化文件

       (4)将redis目录下的redis.conf文件复制到/etc/redis目录中 以端口号命名配置文件 如"6379.conf"

       (5)修改6379.conf文件

参数说明
daemonizeyes使redis以守护进程模式运行
pidfile/var/run/redis_端口号.pid设置redis的PID文件位置
port端口号设置redis监听的端口号
dir/var/redis/端口号设置持久化文件存放位置                                                

       (6)修改 /etc/init.d/redis_端口号

              在#!/bin/sh下一行添加chkconfig: 2345 10 90

              redis服务必须在运行级为2,3,4,5下启动或关闭,启动优先级时90,关闭优先级时10.

              参考:

             

		#!/bin/sh
              	#chkconfig: 2345 10 90
              	#The redis service must be started or turned off at the operating level 2, 3, 4,5, and the priority of the start is to be close to the order of 90.
              	#Simple Redis init.d script conceived to work on Linux systems
              	#as it does use of the /proc filesystem.

              	PATH=/usr/local/bin:/sbin:/usr/bin:/bin
              	export PATH
             	REDISPORT=6379                            	#端口号,这是默认的,如果你安装的时候不是默认端口号,则需要修改
             	EXEC=/usr/local/bin/redis-server  		#redis-server启动脚本的位置
              	CLIEXEC=/usr/local/bin/redis-cli 		#redis-cli客户端启动脚本的位置
 
              	PIDFILE=/var/run/redis_${REDISPORT}.pid		#PID文件位置
              	CONF="/etc/redis/${REDISPORT}.conf"    		#redis.conf配置文件的位置
              	AUTH="1234"

       (7)设置可执行权限 chmod 755 redis_端口号

       (8)使用/etc/init.d/redis_端口号 start 启动redis

       (9)ps-ef | grep redis 或 redis-cli测试redis是否运行

       (10)设置开机自启动chkconfig redis_端口号 on

       (11)关机重启测试 reboot

10.停止redis服务 redis-clishutdown 或 kill -9redis进程PID

11.测试客户端与redis服务是否连接正常redis-cli ping 返回pong正常 带参数方式

12.使用redis命令行工具redis-cli   不使用参数

13.配置

如:是否开启持久化,日志级别等

       (1) 通过配置文件设置,启动时需将配置文件路径作为启动参数传递给redis-server

              redis-server/path/to/redis.conf

       (2) 通过启动参数传递同名的配置选项会覆盖配置文件中相应的参数

              redis-server/path/to/redis.conf --loglevel warning

       (3) 在redis运行时,通过configset 命令在不重新启动redis的情况动态修改部分redis配置(注:不是所有的配置都可以动态修改)

              configset loglevel warning

              configget loglevel

14.多数据库

       数据库从0开始,默认支持16个数据库,可以通过databases参数配置数据库数量

       切换数据库命令:select数据库号(0-15)

15.开启远程连接

(1) 修改redis.conf文件,将bind 127.0.0.1或者bing localhost 注释掉

(2) redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错

修改办法:protected-mode no

16.可是化工具

http://database.51cto.com/art/201505/477692.htm

2.redis常用命令

2.1 命令返回值:

1.状态回复 ping   返回:pong

2.错误回复 errorcommend   返回:err unknown command 'errorcommend'

3.整数回复 dbsize(数据库中键的数量)     incr foo (incr自增)

4.字符串回复 get foo 存在返回字符串结果     不存在返回(nil)

5.多行字符串回复 keys * 查看所有key  也可以根据key名查询对应key

      

2.2 字符串类型:    

       SET key value 添加一个键值

       KEYS pattern 获取键名列表

?匹配一个字符
*匹配任意个(包括0个)字符
[]匹配括号间任一个字符,可以使用“-”符号表示范围
\x匹配字符x,用转义符号,如要匹配“?”就需要使用\?

       EXISTS key 判断一个键是否存在(存在返回1,否则0)

       DEL key [key ...] 删除一个键或多个键(返回删除键的个数)

       TYPE key 获取键的类型(string字符串,hash散列,list列表,set集合,zset有序集合)

       INCR key 递增数字 (当键不是整数时返回:err value is not an integer or out of range)

       INCRBY key increment 增加指定整数

        DECR key 递减数字

       DECRBY key increment 减少指定整数

       INCRBYFLOAT key increment 增加指定浮点数(双精度浮点数)

       APPEND key value 尾部追加值

        STRLEN key 获取字符串长度(UTF-8编码的中文,每个中文占3个长度)

        MGET key [key ...] 获得多个键值

        MSET key value [key value ...] 设置多个键值

 

2.3 位操作:

       GETBIT key offset

       SETBIT key offset value

       BITCOUNT key [start] [end]

        BITOP operation destkey key [key ...]


2.4 散列操作:

       HSET key field value 设置单个字段值

        HGET key field 获取单个字段

        HMSET key field value [field value ...] 设置多个字段值

        HMGET key field [field ...] 获取多个字段

       HGETALL key 获取键中所有字段

       HEXISTS key field 判断字段是否存在

        HSETNX key field value 当字段不存在时赋值,已存在字段不执行

        HINCRBY key field increment 增加数字 当字段不存在时,自动创建字段并默认字段在执行命令前的值为"0"返回增加后的值

      HDEL key field [field ...] 删除字段或多个字段(返回删除字段的个数)

       HKEYS key 获取键中所有字段

       HVALS key 获取键中所有字段值

       HLEN key 获取键中字段的数量

2.5 列表操作:

        LPUSH key value [value ...] 向列表左边增加元素

        RPUSH key value [value ...] 向列表右边增加元素

        LPOP key 从左边删除第一个元素 返回被删除的元素值

        RPOP key 从右边删除第一个元素 返回被删除的元素值

        LLEN key 获取列表中元素的个数 当键不存在时返回0

        LRANGE key start stop 获取列表片段索引从0开始,也支持负索引。

              例:LRANGE numbers -2 -1 (-1表示最右边的一个元素,-2表示最右边的第二个元素)

                     LRANGE numbers 0 -1 获取列表中所有的元素

              注:如果start大于stop返回空列表

                     如果stop大于实际索引范围,返回到列表最右边的元素(列表中有2,1,0三个元素,当LRANGE numbers 1 999,stop超出实际索引范围时,会从索引1开始取到最右边的元素)

       LREM key count value 删除列表中指定的值

              当count>0时,LREM命令会从列表左边开始删1除前count个值为value的元素

              当count<0时,LREM命令会从列表右边开始删除前count个值为value的元素

              当count=0时,LREM命令会删除所有值为value的元素

       LINDEX key index 获得指定索引的元素值 正数表示从左开始计算索引,负数表示从右开始计算索引

       LSET key index value 设置指定索引的元素值

        LTRIM key start end 删除指定索引范围之外的所有元素

注:LTRIM常和LPUSH一起使用来限制列表中元素的数量,比如记录日志时只保留最近100条日志,则每次加入新元素时调用ltrim命令

例:LPUSH logs $newLog

       LTRIM 0 99

       LINSERT key before|after pivot value 在列表中从左到右查找值为pivot的元素,然后根据before|after来决定将value值插入到pivot元素的前面还是后面。返回插入后列表的元素个数。

       RPOPLPUSH source destination 先执行rpop命令再执行lpush命令。

注:RPOPLPUSH会从source列表右边弹出一个元素,然后将其加入到destination列表左边并返回这个元素的值,过程是原子的。

2.6 集合类型:

        SADD key number [number ...] 增加一个或多个元素,如果key不存在自动创建。集合中已存在的元素忽略,返回成功加入的元素数量。

        SREM key number [number ...] 删除一个或多个元素,返回删除成功的个数。

        SMEMBERS key 获取集合中所有的元素

        SISMEMBER key member 判断元素是否在集合中 存在返回1,否则0

        SDIFF key [key ...] 多个集合间差集运算

        SINTER key [key ...] 多个集合间交集运算

       SUNION key [key ...] 多个及河间并集运算

       SCARD key 获取集合中元素的个数

        ---集合运算并将结果存储---

        SDIFFSTORE destination key [key ...] 多个集合间差集运算,不返回运算结果,将结果存储到destination键中。 常用于需要多步集合运算的场景中,如需要先计算差集再将结果和其他键计算交集。

        SINSERTSTORE destination key [key ...] 同上类似

        SUNIONSTORE destincation key [key ...] 同上类似

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

       SRANDMEMBER key [count] 随机获取集合中的元素,根据count参数来一次随机获得多个元素,正负不用,表现也不同

正数时:随机获得count个不重复的元素。当大于集合中的元素个数,返回集合中全部元素。

负数时:随机获得count个有可能重复的元素。

       SPOP key 从集合中随机弹出一个元素

2.7 有序集合类型:

       ZADD key score member [score member ...] 增加元素(支持双精度浮点,+inf与-inf代表正无穷与负无穷)

       ZSCORE key member 获取元素的分数

       ---获得排名在某个范围的元素列表---

       ZRANGE key start stop [WITHSCORE] 按照元素分数从小到大的顺序返回索引(索引从0开始,负数代表从后向前查找,-1表示最后一个元素。需要同时获取分数的话,命令尾部加上可选参数)

注:ZRANGE命令时间复杂度为O(logn + m)(其中n为有序集合的基数,m为返回元素个数)

       ZREVRANGEkey start stop [WITHSCORE] 按照元素分数从大到小的排序

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

       ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT OFFSET COUNT] 获得指定分数范围的元素从小到大

        注:不包含端点值,可以在分数前加上“(”。例如大于80,小于等于100:ZRANGEBYSCORE key (80 100

       ZREVRANGEBYSCORE key max min [WITHSCORE] [LIMIT OFFSET COUNT] 获得指定分数范围的元素从大到小

       ZINCRBY key increment member 增加元素分数 返回更改后的分数,如果指定元素不存在,先建立它并将它的分数赋为0再执行操作

       ZCARD key 获得集合中元素的数量

        ZCOUNT key min max 获得指定分数范围内的元素个数min和max与ZRANGEBYSCORE特性一样

        ZREM key member [member ...] 删除一个或多个元素 返回成功删除的元素数量(不包含本身就不存在的元素)

        ZREMRANGEBYRANK key start stop 按照排名范围删除元素 按照分数从小到大的顺序删除处在指定排名范围内的所有元素,并返回删除的元素数量

       ZREMRANGEBYSCORE key min max 按照分数范围删除元素 参数min和max与ZRANGEBYSCORE一样 返回删除的元素数量

       ---获得元素的排名---

       ZRENK key member 从小到大获得指定元素的排名(分数最小的排名为0)

       ZREVRANK key member 从大到小获得指定元素的排名(分数最大的排名为0)

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

       ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 计算有序集合的交集

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUN|MIN|MAX] 计算有序集合的并集

destination 新集合键名

numkeys 键数

key [key ...] 一个或多个集合键名

weights 权重

aggregate 计算方式(默认sum求和,min取最小,max取最大存入到新集合中)

3.进阶

3.1 事务

格式:

multi

事务处理...

exec

watch 监控一个或多个键,一旦其中一个或多个键被修改(或删除),之后的事务都不会执行。

例:

set key 1

watch key

set key 2

multi

set key 3

exec

get key

unwatch 取消监控

expire key seconds 设置键的生存时间,单位(秒)。返回1表示成功,0表示key不存在或设置失败。

ttl key 返回键的剩余生存时间,单位(秒)。返回-1代表键不存在或者未设置生存时间。

persist key 将键恢复成永久,成功返回1,键不存在或键本身就是永久的返回0。使用set或getset命令赋值也恢复永久。

pexpire key ms 设置键的生存时间,单位(毫秒)。

提示:使用watch检测一个拥有生存时间的键,键时间到期自动删除并不会被watch命令认为该键被改变。

expireat 使用unix时间(秒)

pexpireat 使用unix时间(毫秒)

 

                    

      

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值