Redis简介
Redis-REmote DIctionary Server
Redis是一个使用ANSI C语言编写的开源数据库
高性能的key-value数据库
内存数据库,支持数据持久化
提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端
Redis安装(Linux)
下载、解压、编译Redis
tar xzf redis-5.0.4.tar.gz
cd redis-5.0.4
make
完成后运行测试
make test
如果出现You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] error 1,则需安装tcl
yum install tcl
再次执行make test则不会报错
安装成功
Redis启动(Linux)
./src/redis-server &
或者
redis-server ${redis.conf} #加载配置启动
redis-server --port ${port} #指定端口启动
Redis启动
这种方式不会占用命令行,如果命令后不加空格&则会占用,如上图
启动redis-cli
./src/redis-cli
或者
redis-cli -port ${port} #指定端口启动(需要和redis-server的端口一致)
redis-cli -h ${ip} #指定host启动
redis-cli -a ${password} #认证启动
#可以组合使用
启动redis-cli
关闭redis-cli
./src/redis-cli shutdown
或者
redis-cli -port ${port} shutdown #指定端口关闭(默认6379,需要和启动端口一致)
redis-cli -h ${ip} shutdown #指定host关闭
#可以组合使用
关闭redis-cli
如果使用Ctrl+C终止了redis-server,则不会进行持久化
Redis配置端口号和密码
打开redis.conf
sudo vim redis.conf
搜索输入/关键字。n:下一个,N:上一个
修改后保存退出,使用redis-server ${redis.conf} 加载配置启动
...
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379 #端口号
...
# use a very strong password otherwise it will be very easy to break.
#
requirepass password #密码
...
Redis基础命令
info ---- 查看信息
ping ---- 测试连接
quit ---- 退出连接
save ---- 持久化
dbsize ---- 查看key数量
select ---- 选择db
flushdb ---- 清除当前db
flushall ---- 清除所有db
Redis常用数据类型
string(字符串)
list(链表)
set(无序集合)
sorted set(有序集合)
hash(Hash表)
Redis常用键命令
set ---- 设置键值 ---- set testkey testval
get ---- 获取值 ---- get testkey
del ---- 删除 ---- key del testkey
exists ---- 判断key是否存在 ---- exists testkey
expire ---- 设置key生存时间单位s ---- expire testkey 10
mset ---- 一次设置多个键值 ---- mset k1 v1 k2 v2 k3 v3
mget ---- 一次获取多个值 ---- mget k1 k2 k3
setex ---- 在设置键时设置生存时间单位s ---- setex testkey 10 testval
psetex ---- 在设置键时设置生存时间单位ms ---- setex testkey 1000 testval
ttl ---- 查看一个key剩余生存时间单位s,-1为永久存在-2为不存在 ---- ttl testkey
type ---- 查看值类型 ---- type testkey
randomkey ---- 随机key的值 ---- randomkey
rename ---- 重命名key(新的key如果已存在会覆盖原有的) ---- rename testkey newkey
renamenx ---- 重命名key(以nx结尾的命令会做验证,以renamenx 为例,如果新的key如果已存在不会覆盖原有的键,返回0)
getrange ---- 获取一段范围的值 ---- getrange testkey 0 3(返回"test")
getset ---- 获取旧的值设置新的值 ---- getset testkey newtestval(返回"testval")
strlen ---- 获取字符串长度 ---- strlen testkey
append ---- 追加字符串 ---- append testkey appendstr
incr ---- int类型的值+1 ---- incr testint
incrby ---- int类型的值+n ---- incr testint 100
decr ---- int类型的值-1 ---- decr testint
decrby ---- int类型的值-n ---- decr testint 100
hset ---- 设置hash值 ---- hest map name tom
hexists ---- 查看hash表的指定字段是否存在 ---- hexists testmap name
hget ---- 查看hash表的指定字段值 ---- hget testmap name
hgetall ----查看hash表所有键值 ---- hgetall testmap
hkeys ---- 查看hash表所有键---- hkeys testmap
hvals ---- 查看hash表所有值---- hvals testmap
hlen ---- 查看hash表键数量---- hlen testmap
hdel ---- 删除hash表中的key ---- hdel name
lpush ---- 将一个或多个值插入到list头部 ---- lpush testlist 1 2 3 4 5 6
llen ---- 获取list长度 ---- llen testlist
lrange ---- 返回list中指定区间内的元素 ---- lrange testlist 0 3
lset ---- 通过索引来设置元素的值 ---- lset testlist 0 100
lindex ---- 通过索引获取列表中的元素,-1为最后一个元素, -2 为倒数第2个 ---- lindex testlist 1
lpop ---- 移除list中第一个元素 ---- lpop testlist
rpop ---- 移除list中最后一个元素 ---- rpop testlist
sadd ---- 将一个或多个成员元素加入到集合中 ---- sadd testset a b c d
scard ---- 回集合中元素的数量 ---- scard testset
smembers ---- 返回集合中的所有的成员 ---- smembers testset
sdiff ---- 返回给定集合之间的差集 ----sdiff testset1 testset2
sinter ---- 返回给定所有给定集合的交集 ----sinter testset1 testset2
sunion ---- 返回给定集合的并集 ----sunion testset1 testset2
srandmember ----- 返回集合中的n个随机元素 ---- srandmember testset 3
sismember ---- 判断成员元素是否是集合的成员 ---- sismember testset a
srem ---- 移除集合中的一个或多个成员元素 ---- srem testset a b
spop ---- 移除集合中的指定 key 的一个或多个随机元素,并返回这个元素 ---- spop testset
zadd ---- 将一个或多个成员元素及其分数值加入到有序集当中 ---- zadd testsorted 100 a 200 b 300 c
zscore ---- 返回有序集中成员的分数值 ---- zscore testsorted a
zcount ---- 计算有序集合中指定分数区间的成员数量 ---- zcount testsorted 0 300
zrank ---- 返回有序集中指定成员的排名(从小到大) ---- zrank testsorted a
zincrby ---- 指定成员的分数加+n ---- zincrby testsorted 1000 a