1、下载地址:http://redis.io/download,下载最新稳定版本
wget http://download.redis.io/releases/redis-6.0.8.tar.gz
tar -xzvf redis-6.0.8.tar.gz
cd redis-6.0.8
make
cd src
./redis-server
./redis-server ../redis.conf
//连接redis服务器:redis-cli -h target-host -p 6379
info server:查看服务器信息
redis-cli -n index-db:连接指定数据库
info keyspace:查看当前数据库信息(所在库:key数量,key生存时间,平均key毫秒)
client list:查看当前连接数据库信息
//redis安全
1、通过redis.conf文件设置密码参数或命令行
config set requirepass "password"
config get requirepass :查看是否设置密码
//redis性能
redis-benchmark [option] [option value]
$redis-benchmark -n 10000 -q //同时10000请求
-h:指定服务器主机名(默认127.0.0.1);-p:服务器端口(默认6379);-s:指定服务器socket;-c:指定并发连接数(50);-n:指定请求数(10000);-d:以字节形式指定set/get值的数据大小(2);-k:(1=keep alive;0=reconnect默认1);-r:set/get/incr使用随机数key,sadd使用随机值;-P通过管道传输<numreq> 请求(默认1);-q:强制退出redis,仅显示query/sec值,显示每秒执行的请求数;--csv:以csv格式输出;-l:生成循环永久测试;-t:进运行以douhao分割的测试命令列表(set,get,lpsuh);-I(i):idle模式,仅打开n个idle连接并等待
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
客户端命令:
client list
$ select index-db:切换数据库
$ save:备份当前数据库
$ bgsave:后台执行备份
$ config get dir(获取redis安装目录,可将备份创建的dump.rdb文件放到此目录下恢复数据)
keys pattern :(keys *获取库内所有key)
move key db:把当前库内的key移动到指定库
exists key :检查key是否存在(1/0)
del key [key...] :删除key(1/0)
expire key seconds :为key设置过期时间,秒为单位(1/0)
expireat key timestamp :设置过期时间时间戳(1/0)
ttl key:剩余生存时间(key不存在返回-2,key存在未设置生存时间返回-1,否则返回秒数)
pttl key:剩余生存时间(key不存在返回-2,存在未设置返回-1,否则返回毫秒数)
flushdb: 清空当前库
randomkey:从当前库随机返回一个key
rename key newkey:重命名key
renamenx key newkey:仅当newkey不存在时,重命名
scan cursor [MATCH pattern] [COUNT count]:迭代数据库键,scan 0 10,以0作为游标开始新迭代,默认10条(返回参数1:下次迭代的新游标,第二个返回数组)
type key:查看存储值得类型
dump key :序列化给定key的值,返回序列化后的值(是redis特有的不标准的二进制,便于传输),key不存在返回nil(v>=2.6.0)
restore newkey TTL 二进制数据 REPLACE ABSTTL :(ttl0永久/秒数;replace覆盖已存在的键名,ABSTTL将ttl设为时间戳 )
redis>=3.0.6 MIGRATE支持多键迁移
核心参数:host:目标ip,Port目标端口,key|"":要迁移的键名(redis3.0.6+支持多建迁移此处为空字符串),destination-db:目标数据库索引(0-15),timeout:迁移超时时间(毫秒)
可选参数:COPY:迁移后不删除原建,REPLACE:覆盖目标已存在的的键,KEYS key key1 [key...]:3.0.6迁移多个建,Auth Password:目标实例认证密码,AUTH2 username password:目标实例用户密码
迁移单个键并覆盖目标
MIGRATE 127.0.0.1 6379 key 0 1000 REPLACE
#迁移多个建保留原键
MIGRATE 127.0.0.1 6379 "" 0 5000 COPY KEYS key1 key2 key3
MIGRATE特性:
原子操作:整个过程要么迁移成功,否则失败
直接传输:数据在源和目标redis直接传输
// string 存储
$ set key value (ok/0)//key不存在则设置,存在则覆盖
$ setnx key value //只有key不存在时设置
$ get key
$ getrange key start end //截取值的字符串
$ getset key value //设置新值返回旧值
$ mget key key1... //获取一个或多个key的值
$ setex key seconds value //设置生存时间秒的键值(已存在替换旧值)
$ setrange key offset value //设置替换从偏移量开始的字符串值
$ strlen key //返回字符串值的长度
$ mset key value [key1 value]
$ msetnx key value [key1 value1] //同时给多个不存在的key设置键值
$ psetex key millisesconds value //设置生存时间毫秒键值
$ incr key
$ incrby key increment(增量值,值可为负数 )
$ incrbyfloat key increment(增加浮点增量值)
$ decr key
$ decrby key increment
$ append key value
setbit key offset value //对key所存储的字符串值,设置或删除制定偏移量上的位
getbit key//对key存储的字符串,获取指定偏移量上的位
$ del key 或 del key key1
// 列表存储
$ lindex key index //通过索引获取列表的元素
$ llen key
$ lpush key value [value1 ...] //将一个或多个值插入列表头部
$ rpush key value [value1 ...]
$ lrange key start end //获取列表内指定范围内的元素(全部start:0 end:-1 ...)
$ lset key index value //根据索引设置列表元素
$ lpop key //移除头部元素并返回移除值
$ blpop key [key1 ...] timeout //移除头部元素阻塞
$ rpop key
$ brpop key [key1 ...] timeout //移除尾部元素阻塞
$ ltrim key start end //去除范围外部元素
$ lrem key count value //移除与value相等的元素(count>0头像尾count数量,count<0尾向头count数量,count=0删除所有与value相等的值)
$ linsert key before|after pivot value //在列表的元素前或后插入元素
$ lpushx key value
$ rpushx key value //为已存在的列表添加值
$ rpoplpush source destination //移除列表最后一个元素,并添加到另一个列表,并返回元素
$ brpoplpush source destination timeout
// hash存储
$ hset key field value
$ hsetnx key field value
$ hmset key field value [filed1 value1 ...]
$ hmget key field [field ...]
$ hget key field
$ hdel key field [field]
$ hgetall key 获取hash key所有字段和值
$ hexists key field
$ hincrby key filed increnment
$ hincrbyfloat key filed increment
$ hlen key //所有字段数量
$ hkeys key //所有字段
$ hvals key //获取hash表的所有值
$ hscan key cursor [MATCH PATTERN] [COUNT count] //迭代hash表中键值
//集合存储
$ sadd key value [value1 ...]
$ scard key 获取集合成员数量
$ sdiff key [key1 ...]
$ sdiffstore newkey key1 [key2 ...]
$ sinter key [key1 ...] //交集
$ sinterstore newkey key [key1 ...]
$ sismember key member // 检查集合元素是否存在
$ smembers key //返回集合所有成员
$ smove source destination member
$ spop key //随机移除并返回元素
$ srandmember key [count] //随机返回集合指定元素个数
$ srem member [member ...] //移除集合一个或多个成员
$ sunion key [key1] //集合并集
$ sunionstore newkey key [key1 ...]
$ sscan key cursor [MATCH PATTERN] [COUNT count]
//有序集合存储
$ zadd key score member [score1 member1 ...]
$ zcard key //返回集合元素个数
$ zrem key member [member ...] //zrem移除一个或多个元素
$ zremrangebyscore key min max
$ zrange key start end [withscores]
$ zrangebyscore key min max [withscores]
$ zrevrange key start end [withscores]
$ zrevrangebyscore key max min [withscores]
$ zrank key member //返回有序集合指定成员的索引
$ zrevrank key member //返回有集合从大到小的索引
$ zremrangebyrank key start end //移除排名区间的所有成员
$ zscore key member //返回集合中指定成员的分数
$ zinterstore destination-key keynum key [key1 ...]
$ zunionstore destination-key keynum key [key1 ...] //把多个集合并集存储到新destination-key,keynum和key数量一致
// HyperLoglog存储
pfadd key element [element ...] //添加基数
pfcount key [key1 ...]
pgmerge destination key [key ...]
// publish and subcribe
pubsub [channels|numsub] [pattern channel ...](p*) //查看订阅与发布状态
publish channel messge //将信息发布到指定频道
subscribe channel [channel ...] //订阅一个或多个频道
unsubscribe channel [channel ...] //取消订阅
psubscribe pattern [pattern ...] //订阅一个或多个给定模式频道
punsubscribe pattern [pattern ...]
// 事务
multi
set key value
mset key1 value1 key2 value2
get key
exec
discard
//reids lua脚本
eval "return {KEYS[1],KEYS[2],ARGV[1]}" keysnum key-value argv-value
geoadd Longitude latitude member [longitude latitude ...] //添加地理位置坐标
geopos key member [member ...] //获取一个或多个地理位置坐标
geodist key member1 member2 [m|km|ft英尺|mi英里] // 计算两个位置的距离
georadius key lng lat radius m|km|mi英里|ft英尺 [WITHCOORD] [withdist] [withhash] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key] //根据坐标获取指定范围内的集合
georadiusbymember key member radius m|km|mi英里|ft英尺 [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]//根据集合某位置获取指定范围位置集合
***
withdist:同时返回距离;withcoord:同时返回经纬度;withhash:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值。主要应用与底层应用或调试;count:限定返回的记录数;asc:从金稻园;desc:从远到近
***
geohash key member [member ...] 返回一个或多个位置的geohash值
// php使用redis
1、php安装phpredis扩展
$ wget https://github.com/phpredis/phpredis/archive/3.1.4.tar.gz
$ tar zxvf 3.1.4.tar.gz # 解压
$ cd phpredis-3.1.4 # 进入 phpredis 目录
$ /usr/local/php/bin/phpize # php安装后的路径
$ ./configure --with-php-config=/usr/local/php/bin/php-config
$ make && make install
2、修改php.ini文件 vi /usr/local/php/lib/php.ini增加:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts"
3、连接redis
$redis = new Reids();
$redis->connect('127.0.0.1',6379);
echo $redis->ping();
$redis->set(''key,'value');
$redis->get('key');