注:本篇博客的所有测试环境均为Ubuntu16.04之下,本篇博客总结自Redis教程。
数据库的安装与配置
Ubuntu下安装
- $sudo apt-get update
- $sudo apt-get install redis-server
服务端启动命令
redis-server
客户端启动命令
redis-cli
启动成功之后会出现:
redis 127.0.0.1:6379>
在终端上输入ping命令,如果出现pong则说明安装成功。
设置redis数据库可远程登录并设置登录密码
使用root权限修改/etc/redis/redis.conf文件:
想使用哪个密码进行登录就直接修改“password”这个字符串就行,如图我现在的密码是password。
设置允许远程登录:
将bind 127.0.0.1那一行进行注释。
修改完之后将redis服务进行重启:
sudo /etc/init.d/redis-server restart
修改完成之后我们的登录方式变为:
redis-cli -h 127.0.0.1 -p 6379(默认端口) -a password
redis的常用命令汇总
我将从redis数据库能够存储的数据结构的类型进行一个个的汇总(只是博主认为较常用的,详细的大家可以查阅官方文档或百度)
获取数据库所有键
使用 KEYS 命令:KEYS pattern
,例如:redis> keys *
列出所有 key。
键
redis 127.0.0.1:6379> SET name redis
OK
redis 127.0.0.1:6379> DEL name
(integer) 1
DEL 是一个命令,name 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0。
- EXISTS key
检查给定 key 是否存在。- KEYS pattern
查找所有符合给定模式( pattern)的 key 。- RENAME key newkey
修改 key 的名称- TYPE key
返回 key 所储存的值的类型。
字符串
redis 127.0.0.1:6379> SET name redis
OK
redis 127.0.0.1:6379> GET name
“redis”
我们使用了 SET 和 GET 命令,键为name。
- MGET key1 [key2…]
获取所有(一个或多个)给定 key 的值。- STRLEN key
返回 key 所储存的字符串值的长度。- MSET key value [key value …]
同时设置一个或多个 key-value 对。- INCR key
将 key 中储存的数字值增一。- INCRBY key increment
将 key 所储存的值加上给定的增量值(increment) 。- DECR key
将 key 中储存的数字值减一。- DECRBY key decrement
key 所储存的值减去给定的减量值(decrement) 。- APPEND key value
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
哈希(Hash)
Redis hash 是一个string类型的field和value的映射表。Redis 中每个 hash 可以存储40多亿键值对。
127.0.0.1:6379> HMSET redis name “redis tutorial” description “redis basic commands for caching” likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL redis
- “name”
- “redis tutorial”
- “description”
- “redis basic commands for caching”
- “likes”
- “20”
- “visitors”
- “23000”
我们设置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 redis 中。
- HDEL 表名 key[key2]
删除一个或多个哈希表字段。- HEXISTS 表名 key
查看哈希表中指定的字段是否存在。- HGETALL 表名
获取指定哈希表所有字段和值。- HINCRBY 表名 key increment
为哈希表的指定字段的整数值加上增量 increment 。- HKEYS 表名
获取哈希表中的所有字段。- HMGET 表名 key [key2]
获取所有给定字段的值。- HMSET 表名 key1 value1 [key2 value2 ]
同时将多个 key-value (键-值)对设置到哈希表中。- HSET 表名 key value
将哈希表中的字段 key 的值设为 value 。- HVALS 表名
获取哈希表中所有值。
列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部或者尾部,一个列表最多可以包含40亿多个元素。
redis 127.0.0.1:6379> LPUSH redis redis
(integer) 1
redis 127.0.0.1:6379> LPUSH redis mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH redis mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE redis 0 10
- “mysql”
- “mongodb”
- “redis”
在以上实例中我们使用了 LPUSH 将三个值插入了名为 redis 的列表当中。
- BLPOP key1 [key2 ] timeout
移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。- BRPOP key1 [key2 ] timeout
移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。- LINDEX key index
通过索引获取列表中的元素。- LLEN key
获取列表长度。- LPOP key
移出并获取列表的第一个元素。- LPUSH key value1 [value2]
将一个或多个值插入到列表头部。- LRANGE key start stop
获取列表指定范围内的元素(如上面的例子)。- LSET key index value
通过索引设置列表元素的值。- LTRIM key start stop
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。- RPOP key
移除并获取列表最后一个元素。- RPUSH key value1 [value2]
在列表尾部中添加一个或多个值。
集合(Set)
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。Set是String类型的无序集合。集合成员是唯一的。
redis 127.0.0.1:6379> SADD redis redis
(integer) 1
redis 127.0.0.1:6379> SADD redis mongodb
(integer) 1
redis 127.0.0.1:6379> SADD redis mysql
(integer) 1
redis 127.0.0.1:6379> SADD redis mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS redis
- “mysql”
- “mongodb”
- “redis”
我们通过 SADD 命令向名为 redis 的集合插入的三个元素。
- SADD key member1 [member2]
向集合添加一个或多个成员- SCARD key
获取集合的成员数- SISMEMBER key member
判断 member 元素是否是集合 key 的成员- SMEMBERS key
返回集合中的所有成员- SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合- SREM key member1 [member2]
移除集合中一个或多个成员- SUNIONSTORE destination key1 [key2]
所有给定集合的并集存储在 destination 集合中
有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
redis 127.0.0.1:6379> ZADD redis 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD redis 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD redis 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD redis 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD redis 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE redis 0 10 WITHSCORES
- “redis”
- “1”
- “mongodb”
- “2”
- “mysql”
- “4”
我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。
- ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数。- ZCARD key
获取有序集合的成员数。- ZCOUNT key min max
计算在有序集合中指定区间分数的成员数。- ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment。- ZRANK key member
返回有序集合中指定成员的索引。- ZREM key member [member …]
移除有序集合中的一个或多个成员返回有序集合中指定成员的索引。- ZUNIONSTORE destination numkeys key [key …]
计算给定的一个或多个有序集的并集,并存储在新的 key 中。