前言
简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
特点
1.支持持久化
2.支持list,set,zset,hash等结构存储
3.支持主从模式的数据备份
优势
1.性能高
2.数据类型丰富
3.原子性
4.特定丰富
修改配置
CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
redis数据类型
String(字符串)
实例:1
2
3
4
5127.0.0.1:6379> set name "hyb"
OK
127.0.0.1:6379> get name
"hyb"
127.0.0.1:6379>
Hash(哈希)—适合存储对象
redis hash 是一个键值对集合。
实例:1
2
3
4
5
6
7
8127.0.0.1:6379> hmset student:1 stuName hyb sex male
OK
127.0.0.1:6379> hgetall student:1
1) "stuName"
2) "hyb"
3) "sex"
4) "male"
127.0.0.1:6379>
list(列表)
按照插入顺序排序的元素集合。集合内元素可以不唯一
lpush key member
实例:1
2
3
4
5
6
7
8
9
10127.0.0.1:6379> lpush testList a
(integer) 1
127.0.0.1:6379> lpush testList b
(integer) 2
127.0.0.1:6379> lpush testList b
(integer) 3
127.0.0.1:6379> lrange testList 0 2
1) "b"
2) "b"
3) "a"
set(集合)-无序集合
集合内元素唯一
sadd key member
实例:1
2
3
4
5
6
7
8
9127.0.0.1:6379> sadd testSet a
(integer) 1
127.0.0.1:6379> sadd testSet b
(integer) 1
127.0.0.1:6379> sadd testSet b
(integer) 0
127.0.0.1:6379> smembers testSet
1) "b"
2) "a"
zset -有序集合
每个元素都会关联一个double类型的分数。redis通过分数来进行排序
zadd key score member1
2
3
4
5
6
7
8
9
10
11
12127.0.0.1:6379> zadd testZset 1 aa
(integer) 1
127.0.0.1:6379> zadd testZset 2 bb
(integer) 1
127.0.0.1:6379> zadd testZset 3 bb
(integer) 0
127.0.0.1:6379> zadd testZset 4 qw
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE testZset 0 5
1) "aa"
2) "bb"
3) "qw"
redis 命令
连接远程redis服务器
1 | redis-cli -h host -p port -a password |
keys 命令
del key
key存在是删除key
DUMP KEY
序列化给定key,并返回被序列化的值
EXISTS KEY
检查给定key 是否存在
EXPIRE KEY SECONDS
为key设置过期时间
EXPIREAT KEY TIMESTAMP
时间参数为unix时间戳
EXPIRE KEY MILLISECONDS
设置key的过期时间,以毫秒计
KEYS pattern
查找所有符合给定模式(pattern)的key
MOVE KEY DB
将当前数据库的key移动到给定的数据录db当中
PERSIST KEY
移除key的过期时间
PTTL KEY
返回key的剩余过期时间,毫秒为单位
TTL key
返回key的剩余货期时间,秒为单位
RANDOMKEY
从当前数据库中随机返回一个key
RENAME KEY NEWKEY
修改key的名称
RENAMENX KEY NEWKEY
仅当newkey不存在时,将key改名为newkey
TYPE KEY
返回key所存储的值的类型
String 命令
SET KEY VALUE
设置指定key的值
GET KEY
获取指定key的值
GETRANGE KEY START END
返回key中字符串值的子字符
GETSET KEY VALUE
将给定的key的值设为value,并返回key的旧值。
MGET KEY1 KEY2
获取所有给定key 的值
SETEX KEY SECONDS VALUE
将值value关联到key,并将key的过期时间设为seconds
SETNX KEY VALUE
只有在key不存在时设置key的值
SETRANGE KEY OFFSET VALUE
用value 参数覆写给定key所存储的字符串值,从偏移量offset开始
SETLEN KEY
返回key所存储的字符串的长度
MSET KEY VALUE[KEY VALUE]
同时设置一个或多个key-value对
MSETNX KEY VALUE[KEY VALUE]
同时设置一个或多个key-value对,当且仅当所有给定key都不存在
APPEND KEY VALUE
如果key已经存在并且是一个字符串,append命令将value添加到key原来值的末尾
hash
HDEL KEY FIELD1 [FIELD2]
删除一个或者多个hash表字段
HEXISTS KEY FIELD
查看hash表中指定字段是否存在
HGET KEY FIELD
获取存储在hash中指定字段的值
HGETALL KEY
获取hash中指定key所有字段和值
HKEYS KEY
获取所有hash表中的字段
HLEN KEY
获取hash表中字段的数量
HMGET KEY FIELD1 [FIELD2]
获取所有给定字段的值
HMSET KEY FIELD1 VALUE1 [FIELD2 VALUE2]
同时将多个field-value对设置到hash表key中
HSET KEY FIELD VALUE
将哈希表key中的字段field的值设为value
HSETNX KEY FIELD VALUE
只有在字段field不存在时,设置哈希表字段的值
HVALS KEY
获取hash表中所有值
LIST
BLPOP KEY1 [KEY2] timeout
移出并获取列表的第一个元素,如果列表中没有元素会阻塞列表直到等待超时或者发现可弹出元素为止
set
zset
其他
发布订阅
事物
1 | NULTI |
脚本
EVAL script numkeys key [key …] arg [arg …]
执行lua脚本
EVALSHA sha1 numkeys key [key …] arg [arg …]
执行lua脚本