Redis简介
- Redis-REmote DIctionary Server
- Redis是一个使用ANSI C语言编写的开源数据库
- 高性能的key-value数据库
- 内存数据库,支持数据持久化
- Redis官网https://redis.io/
- 提供了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-cli
./src/redis-cli
或者
redis-cli -port ${port} #指定端口启动(需要和redis-server的端口一致)
redis-cli -h ${ip} #指定host启动
redis-cli -a ${password} #认证启动
#可以组合使用

关闭redis-cli
./src/redis-cli shutdown
或者
redis-cli -port ${port} shutdown #指定端口关闭(默认6379,需要和启动端口一致)
redis-cli -h ${ip} shutdown #指定host关闭
#可以组合使用

如果使用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
网友评论