Remote Dictionary Server(Redis) 远程字典服务器是完全开源免费的,用C语言编写的,遵守BSD开源协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,它也通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。Redis为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。
Rediis 与其他 key - value 缓存产品有以下三个特点:
性能极高 – Redis读的速度是11W次/s,写的速度是81K次/s
支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
丰富的数据类型,Redis不仅仅支持简单的key-value类型的数据,同时还提供Strings, Lists, Hashes, Sets 及 Ordered Sets 等数据结构的存储。
支持数据的备份,即master-slave模式的数据备份。
Redis使用场景,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。
redis的安装、使用
访问https://redis.io/download 到官网进行下载。这里下载的4.0版本.
1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作
tar -zxf redis-4.0.9.tar.gz
2.进入解压文件目录使用make对解压的Redis文件进行编译
cd redis
make
3.编译成功后,进入src文件夹,执行make install进行Redis安装。
make install
第三步:部署
1.为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中
1)、创建bin和etc文件
mkdir etc
mkdir bin
2)、回到刚刚安装目录,找到redis.conf,将其复制移动到 /usr/local/redis/ect 下
mv redis.conf /usr/local/redis/etc/
进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/
进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/
执行命令 :mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/
2、执行redis-server 启动redis
redis的数据结构
存储方式
Keys:给存储在redis内存中的数据起的变量名字
命名规范:空格、\n 不能使用
取名:简短、有意义(sixstar:teacher:hansome)
values:
Strings Lists Sets Sorted sets Hash
string类型
存储任何数据:通过序列化来存储,serialize unserialize 序列化 反序列化
持久化的memcache
操作方法:
set( ‘key’, ‘value’) 设置值 get( ‘key’ )
mset( $array ) 一维数组(一次设置多个元素的值)
mget( $array ) 一次获取多个值
incr 对key做自增,返回新的值
decr 对key做自减,返回新的值
incrby(’key’, value) 加指定值 $redis-> incrby( ‘pack’, 100 );
decrby() 减指定值
append() 给指定key的字符串值追加value
substr( $key, $start, $end ) 字符串截取
List
list类型:双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素
list既可以用作栈,也可以用做队列
lrange( key,start,end); 读取指定区间的元素,从0开始索引
lpush( key, val1, val2,…valn); 在key对应的头部添加字符串元素
rpush(key, val1, val2,…valn ); 在key对应的尾部添加
$redis->lpush( 'packpython1', 'shell', 'linux', 'oracle');
$redis->rpush( 'packpython1', 'mui','mui1','mui2');
lpop( ‘key’) 从list的头部删除元素, 并返回被删除的元素
rpop(‘key’) 从list的尾部删除元素, 并返回被删除的元素
llen() 返回list长度
ltrim( key, start , end ); 截取list,保留指定区间元素
Set(Set) string类型的无序集合(2的32次方-1)
操作方法:添加、删除、并集、交集、差集
sAdd( key, value1,value2,….valuen)添加一个string元素到key对应的set集合中
sMembers( key ); 返回key对应set的所有元素,结果是无序的
sRem( key, val1 ) 移除指定元素(value)
scard( key ); 返回set元素的个数
sismember( key, val ) 判读key的集合中是否存在元素val
sinter( key1, key2 ) 返回所有给定的set(集合)的交集
sunion( key1, key2 ) 返回所有给定的set(集合)的并集
sdiff( key1, key2 ) 返回所有给定的set(集合)的差集
Sort Set string类型的元素的集合
每一个元素都会关联一个权,通过权值可以有序的获取集合中的元素
zAdd( key, score, value1, score2, value2 ) 添加元素到集合,如果元素在集合中存在更新对应score
zCard( key ); 返回集合中元素个数
zScore( key, value ); 返回给定元素的score
zRem( key, val ); 删除指定元素(元素值)
zRemrangebyrank( key, score1, score2 ); 删除集合中排名(权重)在给定区间的元素
zRange( key, start, end ) 从集合中返回指定区间(索引),返回按自增排序的数组
zRangebyscore(key, start, end ) 从集合中返回指定区间(权重值),返回按自增排序的数组
zRevrange() 同上,降序排序
zRevrangebyscore() 同上,降序排序
zIncrby( key, ++score, val ) 增加某个val的权重值