今天我们来看看redis安装和使用,一切总结都是为了日后能方便的使用。
redis存储的数据就是K V形式的,可以进行持久化
首先我们需要先安装一下,我这里选择的是在线下载源码包,然后进行编译
cd /opt
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
下载好之后,我们需要解压缩
tar -zxvf redis-4.0.8.tar.gz
解压缩后,进入文件夹,并执行make命令进行编译
cd redis-4.0.8
make
编译之后,我们需要安装,并指向安装目录,等号左右不要有空格
cd bin
make install PREFIX=/usr/local/redis-4.0.8
之后,我们将redis.conf复制到我们的安装目录中
cp redis.conf /usr/local/redis-4.0.8/redis.conf
配置文件中的相关配置项,在我的其他博客有说明,大家需要改什么,可以去参考一下
为了更好的操作,我只改其中一个配置,就是将daemonize no改为yes,让其在后台运行
cd /usr/local/redis-4.0.8
vim redis.conf
修改完之后,我们可以启动了
cd bin
./redis-server ../redis.conf
我们可以查看一下,进程中是否存在redis
ps -aux|grep redis
redis是单线程运行的,每秒可处理10万次左右的请求,这个需要结合宿主机的硬件,我们可以运行命令来查看,我的机器大概是7万左右
./redis-benchmark
好了,到现在,我们就可以连接redis客户端,来试试各种命令了
连接客户端这一块,也可以说点东西
默认连接的就是6379,所以如果我们端口没改,可以直接执行命令连接redis客户端
./redis-cli
如果我们修改端口为6378,那么连接的时候需要加上端口了,包括如果本地有多个redis实例,那么使用客户端连接redis时需要加上端口
./redis-cli -p 6378
还有一种就是远程连接,这时就需要加上ip了,如果端口不是默认6379,也需要加上端口,配置文件中设置了密码,那么就需要加上密码了
./redis-cli -h ip -p 端口 -a 密码
我们也可以先连接上,然后在输入密码进行验证
auth password
好,客户端连接上了,我们可以发个暗号ping,会回复一个PONG
获取配置文件中的某个值
config get key
设置配置文件中的某个值
config set key value
配置文件默认是16个数据库,我们可以通过命令来切换数据库
select 切换的库下标
查看当前库key的数量
DBSIZE
想看具体的key有哪些
keys *
想匹配某个key,我们可以用?作为占位符,只占一位,比如匹配key为k2
keys k?
判断某个key是否存在,存在返回1,不存在返回0
EXISTS 查询的key
将某个键值对在当前库移除,并移动到其他库
move 移除的key 移动到的库索引
查看还有多少秒过期,-1表示永不过期,-2表示已过期
ttl key
为给定的key设置过期时间,过期之后就不存在了
expire key 秒钟
查看你的key是什么类型
type key
添加值,值有五种类型String 字符串,List 列表,Set 集合,Hash hash散列值,Zset sorted set 有序集合
String(字符串)
String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的,意思是Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。
String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。
设置值
set key value
删除key
del key
追加值
append key value
查看长度
STRLEN key
当值为数字时,可以直接进行加一操作
INCR key
当值为数字时,可以直接进行减一操作
DECR key
当值为数字时,可以直接进行相加操作
INCRBY k2 value
当值为数字时,可以直接进行相减操作
DECRBY k2 value
获取开始下标和结束下标之间的值,当结束下标为-1时,就是末尾
GETRANGE key 开始下标 结束下标
设值覆盖
SETRANGE key 开始下标 替换的值
设置值并设置过期时间
setex key 过期时间 value
如果不存在设值,存在则不覆盖
setnx key value
设置多个值
mset key value key value key value ......
获取多个值
mget key key key ......
进行多个不存在设值,但是不能已存在和不存在的混合设置,要么都存在要么都不存在
msetnx key value key value key value ......
设置新值,并返回旧值,如不存在旧值就返回null
getset key value
List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层实际是个链表。
如果键不存在,创建新的链表
如果键已存在,新增内容
如果值全移除,对应的键也就消息了
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。
从左到右设置值
LPUSH key value value ......
从右到左设置值
RPUSH key value value ......
查看值,可以根据下标选择,结束下标为-1时就是末尾
LRANGE key 开始下标 结束下标
从左弹出值
LPOP key
从右弹出值
RPOP key
获取某个下标的值
lindex key index
获取长度
llen key
删除N个值
lrem key n value
截取某段值,将截取的值赋值
ltrim key 开始下标 结束下标
源列表的从右弹出的值从左压入目标列表
rpoplpush 源列表 目标列表
在某个值的前面插入值
linsert key before 基值 插入值
在某个值的后面插入值
linsert key after 基值 插入值
Set(集合)
Redis的Set是String类型的无序集合,它是通过HashTable实现的。
设置一个set
sadd key k1 v1 k2 v2 k3 v3
查看set的值
smembers key
查看set中是否存在某个键,存在返回1不存在返回0
sismember key
获取set的元素个数
scard key
删除set的某个元素
srem key value
从set中随机出n个数
srandmember key n
随机出栈,默认出一个,如果写n,则随机出n个
spop key n(不写,默认出n个)
将set1的值移到set2中
smove set1 set2 value
差集,在set1里面而不在set2里面的元素
sdiff set1 set2
交集,在set1和set2都存在的元素
sinter set1 set2
并集,set1和set2所有元素去重之后的集合
sunion set1 set2
Hash(哈希)
Redis hash是一个键值对集合。
Redis hash是一个String类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>
设置值,key为redis的键,里面k v为map的元素
hset key k v
获取值,首先获取该元素,再获取元素中的值
hget key k
设置多个值
hmset key k v k v k v ......
获取多个值
hmget key k k k ......
获取所有的值
hgetall key
删除某些元素
hdel key k k k ......
获取元素数量
hlen key
判断是否存在某个元素,存在返回1不存在返回0
hexists key k
获取所有元素的key
hkeys key
获取所有元素的value
hvals key
元素的值如果为整数时,可以自增某个整数
hincrby key k n
元素的值如果为小数时,可以自增某个小数
hincrbyfloat key k n
如果不存在某个元素则设值,不存在设值成功返回1,存在设值失败返回0
hsetnx key k v
Zset(sorted set:有序集合)
Redis zset和set一样也是String类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复。
设置值,值又是一个键值对,包含分数和值
zadd key score value score value score value ......
查看值
zrange key 开始下标 结束下标
查看带有分数的值
zrange key 开始下标 结束下标 withscores
查看某个分数区间的值
zrangebyscore key 开始分数 结束分数
查看某个分数区间的带有分数的值
zrangebyscore key 开始分数 结束分数 withscores
查看不包含某个分数区间,但不包含开始分数或结束分数的值
zrangebyscore key (开始分数 (结束分数
查看某个分数区间,并从开始下标截取n个值
zrangebyscore key 开始分数 结束分数 limit 开始下标 n
删除元素
zrem key 值
查看长度
zcard key
统计某个分数区间中的个数
zcount key 开始分数 结束分数
查看值的下标
zrank key value
查看值的分数
zscore key value
逆序获取下标值
zrevrank key value
将zset逆序排列
zrevrange key 开始下标 结束下标
逆序获取某个分数区间的值
zrevrangebyscore key 开始分数 结束分数
清除库数据(慎用)
FLUSHDB
清除所有库数据(慎用)
FLUSHALL
最后给大家提供一个Redis操作手册的网站,可以参考参考Redis命令参考