一 、redis的安装
1、查看是否有安装gcc tcl 编译环境
Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。
TCL(Tool Command Language)工具脚本语言,是Linux内的一种语言包。
查看安装命令: whereis gcc tcl
安装命令: yum -y install gcc tcl
2、上传redis安装包,并进行解压
3、手动对安装包进行编译安装 make && make PREFIX=/opt/xxx/redis install (安装的目录可以随意指定)
4、配置可执行文件的脚本目录,保证执行脚本可以在任意的目录之下执行
vi + /etc/profile
配置完环境变量之后, 读取配置文件(就是一个对配置文件进行编译的过程) source /etc/profile
5、安装redis内存服务器数据库,并执行 在/software/redis-2.8.18/utils目录下找到 install-server.sh
./install-server.sh 执行这个命令
在安装的过程中可以设置redis对外通讯的端口 ,默认是6379
/etc/redis/6379.conf redis是一个内存数据库,有自己的实例,每一个端口代表了当前数据库服务器的一个实例,有自己的配置文件 /etc/redis/6379.conf ,实例与端口号是一一对应的,当在安装一个实例之后,端口号就需要发生变化 ,可以允许创建多个实例
/var/log/redis_6379.log redis日志的存放目录
/var/lib/redis/6379: redis持久化数据的存放目录
/opt/xxx/redis/bin/redis-server 可执行文件的安装目录 (环境变量配置之后才能找到这个目录)
#----¥以上步骤安装了redis的服务器¥---#
查看服务器启动的运行命令: redis-server -h
查看redis客户端启动的相关命令: redis-cli -h
创建redis客户端的命令:
redis-cli
redis 支持的数据类型: 字符串、列表、散列、集合、有序集合、HyperLogLog ,所有的数据都是按照k-v键值对的数据类型来进行存储的
string支持的数据方式: a、基本操作时字符串操作,追加,截取 set、get、append、、、
b、数值类型的计算
c、位图计算
nx --not exists
xx --只有存在的时候才进行操作
一次性的设置多个键值对组合:
mset k1 a k2 b k3 c
mget ....
设置一个键的存活时间:
expire key seconds
查看剩余的时间:
TTL key
PTTL key
key存在但没有设置TTL,返回-1 key存在,但还在生存期内,返回剩余的秒或者毫秒 key曾今存在,但已经消亡,返回-2
查看一个键的长度: STRLEN key
查看一个键的数据类型:type key OBJECT encoding key (查看底层存储的数据结构)
对key值进行数据运算:INCR k3 INCRBY key number (指定增长的步长)
返回旧值并设置新值:GETSET KEY VALUE
对key值进行位图计算: SETBIT key offset value
.offset 偏移量。从0开始
查看某个值在key中第一次出现的位置: BITPOS key value
bit位进行运算: BITOP and k3 k1 k2 (对k1,k2进行与运算,然后将运算的结果放置到k3中 )
统计字符串之上所有bit位为1的个数:
注意:在redis数据库中可以创建无数个实例,但每个实例可以操作的数据库数量是16个
FLUSHALL:该命令会清空当前实例下数据库下面的所有的数据
FLUSHDB:只清空当前数据库中所有的数据
登录不同的数据库: redis-cli -n 2
List 列表、数组
1、基于Linked list 实现 2、元素是字符串类型的 3、列表头尾增删快,中间增删慢,增删元素是常态
4、元素可以重复的出现 5、最多可以包含2^32 -1 个元素
命令:
命令流程:
B block块,阻塞 Lleft 左 R right 右 X exists: 存在才执行
左右或者头尾压入元素: String set key "abc"
LPUSH key value [value.......]
LPUSHX key value
RPUSH key value [value.....]
RPUSHX key value
list 同时具备了队列、栈、数组、阻塞队列的所有特点
获取指定位置的元素: LINDEX key index
设置指定位置的元素: LSETkey index value
列表长度、元素个数: LLEN key LRANGE key 0 -1
从列表头部开始删除等于value的元素count次,LIST可以重复出现 : LREM key count value
count>0 : 从表头开始向表尾搜索,移除与value相等的元素,数量为count
count<0: 从表头开始向表尾搜索,移除与value相等的元素,数量为count 的绝对值
去除指定范围外的元素:LTRIM key start stop
在指定的位置插入一条数据: LINSERT key before/after value1 value2
阻塞: 如果弹出的列表不存在或者为空,就会阻塞
超时时间设置为0,就是永久阻塞,知道有数据可以弹出
如果多个客户端阻塞到同一个列表之上,使用FIRST IN FIRSY SERVICE原则,先到先服务
左右或者头尾阻塞或者弹出元素 :
BLPOP key [key....] timeout
BRPOP key [key....] timeout
从一个列表尾部阻塞弹出元素压入到另一个列表的头部:
BRPOPLPUSH source destination timeout
hash 散列:
由field和关联的value组成的map键值对,field和value是字符串类型的数据
一个hash最多包含2^32-1键值对
设置单个字段: HSET key field value
设置多个字段: HMSET key field value
返回字段个数:HLEN key
判断字段是否存在: HEXISTS key exists
hash用途: 节约内存空间 每创建一个键,他都会为这个键创建一些附加管理的信息(比如这个键的类型,这个键最后一次呗访问的时间等等)
所以数据库有里面的键越多,redis数据库服务器在存储附加管理信息方面耗费的内存就会越多,花在管理数据库键上的CPU也会越多在字段的值上进行浮点数的增量计算
set集合:无序的,去重的,元素是字符串类型
增加一个或者多个元素: SADD key number (如果元素已经存在,则自动进行忽略)
移除一个元素: SREM key member (元素不存在的时候,进行自动的忽略)
返回结合包含的所有元素: SMEMBERS key (如果集合元素过多,例如有百万个,需要遍历,可能会造成服务器的阻塞,生产坏境应避免使用)
检查给定元素是否存在于集合之中: SISMEMBER key member
随机返回集合中指定个数的元素: SRANDMEMBER key [count]
如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素各不相同。如果count大于等于集合基数,那么返回整个集合
返回集合中元素的个数: SCARD key 键的结果会保存信息,集合长度就记录在里面,所以不需要遍历
随机从集合中移除并返回这个被移除的元素: SPOP key
把元素从源集合移动到目标集合: SMOVE source destination member
set 集合的操作
差集 SDIFF key [key ...] 从第一个集合中去除其他集合中与自己有交集的部分
SDIFFSTORE destination key[key......] ,将差集结果存储在目标key中
交集: SINTER key [key.....],取所有集合交集部分
SINTERSTORE destination key[key....]
并集: SUNION key [key....]
sortedSet 有序集合:
类似于set集合,有序的、去重的,元素是字符串类型,每一个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序进行排列 ,分值可以相同
增加一个或者多个元素:ZADD key score member [score member....]
移除一个或多个元素:ZREM key member [member.....]
显示分值: ZSCORE key member
增加或者减少分值:ZINCRBY key increment member
increment为负数就是减少
返回元素的排名(索引)
ZRANK key member
返回元素的逆序排名:ZREVRANK key member
返回指定索引区间元素:ZRANGE key start stop [WITHSCORES],如果score相同,则按照字典序排序
默认按照score从小到大,如果需要score从大到小,使用ZREVRANGE
返回指定索引区间元素:ZREVRANGE key start stop
返回指定分值区间元素: ZRANGEBYSCORE key min max [withscores] [limit offset count]
返回score默认属于【min,max】之间,元素按照score升序排列,score相同字典序
LIMIT中offset代表跳过多少个元素,count是返回几个,类似于mysql
使用小括号,修改区间为开区间
返回指定分值区间元素: ZREVRANGEBYSCORE key min max [withscores] [limit offset count]
移除指定排名范围的元素: ZREMRANGEBYRANK key start stop
移除指定分值范围元素:ZREMRANGEBYSCORE key min max
返回集合中元素个数: ZCARD key
并集:
ZUNIONSTORE destination numkeys key [key...] [WEIGHTS weight] [aggregate sum|min|max]
numkeys:指定key的数量,必须
weights选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重
AGGREGATE选项,指定并集结果的聚合方式
sum:将所有集合中某一个元素的score值之和作为结果集中该成员的score值
交集: ZINTERSTORE destination numbers key [key....] [weights weight]