Redis
ubuntu下启动服务器
ps aux | grep redis // 查看当前进程是否开启redis
sudo service redis start //启动服务
sudo service redis stop // 关闭服务
sudo service redis restart // 重新启动
redis-cli // 进入客户端
数据类型
- string
- hash
- list
- set
- zset(有序集合)
sring(可以接收任何数据类型)
string 是 redis 最基本的类型。一个key对应一个value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
string操作
- 设置:
SET key value
,(没有则设置,有则更新) - 获取:
GET key
127.0.0.1:6379> SET name xiaoming // 设置{'name':'xiaomibg'}
OK
127.0.0.1:6379> GET name
"xiaoming"
127.0.0.1:6379> SET name xiaohong
OK
127.0.0.1:6379> GET name
"xiaohong"
- 设置多个key-value:
MSET key1 value1 key2 value2
- 获取多个value:
MGET key1 [key2]
127.0.0.1:6379> MSET name1 xiaoming name2 lihua
OK
127.0.0.1:6379> GET name1
"xiaoming"
127.0.0.1:6379> MGET name1 name2
1) "xiaoming"
2) "lihua"
- 追加:
APPEND key value
127.0.0.1:6379> GET name1
"xiaoming"
127.0.0.1:6379> APPEND name1 xiaoming
(integer) 16
127.0.0.1:6379> GET name1
"xiaomingxiaoming"
- 设置过期时间:
SETEX key seconds value
(过期返回nil)
127.0.0.1:6379> SETEX age 5 18
OK
127.0.0.1:6379> GET age
"18"
127.0.0.1:6379> GET age
(nil)
键命令
- 查看所有的KEY:
KEYS *
- 查看以n开头的KEY:
KEYS N*
- 查看KEY[KEY2]是否存在:``EXISTS key [key…]
- 查看key的类型:
type key
- 删除key:
del key [key...]
- 设置过期时间:
EXPIRE key seconds
- 查看key的过期时间:
TTL key
127.0.0.1:6379> KEYS *
1) "name2"
2) "name"
127.0.0.1:6379> KEYS n*
1) "name2"
2) "name"
127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS name name2
(integer) 2
127.0.0.1:6379> EXISTS name name1 name2
(integer) 2
127.0.0.1:6379> type name
string
127.0.0.1:6379> del name2
(integer) 1
127.0.0.1:6379> EXPIRE name 1000
(integer) 1
127.0.0.1:6379> TTL name
(integer) 995
127.0.0.1:6379>
hash
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
hash操作命令
- 设置单个属性:
HSET key field value
(相当于key:{field:value} ) - 设置多个属性:
HMSET key field value [field value ...]
127.0.0.1:6379> HSET user name xiaoming
(integer) 1
127.0.0.1:6379> HMSET user2 name xiaoming age 18
OK
- 获取指定键的所有属性:
HKEYS key
- 获取key的一个field的value:
HGET key field
- 获取key的多个value:
HMGET key field [filed...]
- 获取key的所有value:
HVALS key
127.0.0.1:6379> HKEYS user2
1) "name"
2) "age"
127.0.0.1:6379> HGET user2 name
"xiaoming"
127.0.0.1:6379>
127.0.0.1:6379> HMGET user2 name age
1) "xiaoming"
2) "18"
127.0.0.1:6379> HVALS user2
1) "xiaoming"
2) "18"
- 删除整个hash键和直用del
- 删除fields对应的value
hdel key field [field...]
127.0.0.1:6379> HMSET user3 name lihua age 18 height 188 weight 60
OK
127.0.0.1:6379> HVALS user3
1) "lihua"
2) "18"
3) "188"
4) "60"
127.0.0.1:6379> HDEL user3 height weight
(integer) 2
127.0.0.1:6379> HVALS user3
1) "lihua"
2) "18"
list
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
list操作命令
- 左侧插入:
LPUSH key value [value ...]
(key存在则插入,不存在则创建) - 右侧插入:
RPUSH key value [value ...]
- 查询:
LRANGE key start stop
(相当于python里面的 list[start:stop+1])
127.0.0.1:6379> LPUSH list1 a b c
(integer) 3
127.0.0.1:6379> keys *
1) "list1"
2) "user3"
3) "name"
4) "user2"
127.0.0.1:6379> type list1
list
127.0.0.1:6379> LRANGE list1 0 2 // 在左侧依次插入a b c
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> LPUSH list1 e
(integer) 4
127.0.0.1:6379> LRANGE list1 0 -1
1) "e"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> RPUSH list1 0
(integer) 5
127.0.0.1:6379> LRANGE list1 0 -1
1) "e"
2) "c"
3) "b"
4) "a"
5) "0"
- 在某一元素前面/后面插入:
LINSERT key BEFORE|AFTER pivot value
127.0.0.1:6379> LINSERT list1 BEFORE a A
(integer) 6
127.0.0.1:6379> LRANGE list1 0 -1
1) "e"
2) "c"
3) "b"
4) "A"
5) "a"
6) "0"
- 设置指定索引对应的值
LSET key index value
127.0.0.1:6379> LRANGE list1 0 -1
1) "e"
2) "c"
3) "CC"
4) "A"
5) "a"
6) "0"
127.0.0.1:6379> LSET list1 2 d
OK
127.0.0.1:6379> LRANGE list1 0 -1
1) "e"
2) "c"
3) "d"
4) "A"
5) "a"
6) "0"
- 删除指定元素
LREM key count value
- count > 0 从头到尾删除 count 个 value
- count < 0 从尾到头删除 count 个 value
- count = 0 删除所有的value
set
- 无序集合
- 元素为string类型
- 元素唯一,可以到达去重的目标
- 对于集合没有修改的操作
set操作命令
如果插入重复的member,则只会插入一个
- 增加:
SADD key member [member ...]
- 获取:
SMEMBERS key
- 删除:
SREM key member [member ...]
127.0.0.1:6379> SADD set1 xiaoming lihua zhaogang
(integer) 3
127.0.0.1:6379> SMEMBERS set1
1) "zhaogang"
2) "lihua"
3) "xiaoming"
127.0.0.1:6379> SREM set1 xiaoming lihua
(integer) 2
127.0.0.1:6379> SMEMBERS set1
1) "zhaogang"
zset(有序集合)
- sorted set 有序集合
- 元素为string类型
- 元素唯一性
- 每个元素都会关联一个double类型的score,表示权重,默认按权重从小到大排序
- 没有修改操作
zset操作命令
- 增加:
ZADD key score member [score member]
- 获取
- 按照索引获取(已经按照权重排好序了):
ZRANGE key start stop
- 按照权重获取:
ZRANGEBYSCORE key min max
- 获取权重
ZSCORE key member
- 按照索引获取(已经按照权重排好序了):
127.0.0.1:6379> ZADD zset1 2 two 1 one 5 five 4 four 3 three
(integer) 5
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
5) "five"
127.0.0.1:6379> ZRANGEBYSCORE zset1 3 6
1) "three"
2) "four"
3) "five"
127.0.0.1:6379> ZSCORE zset1 four
"4"
- 删除
- 删除指定的元素:
ZREM key member [member ...]
- 删除权重在指定范围的元素:
ZREMRANGEBYSCORE key min max
- 删除指定的元素:
127.0.0.1:6379> ZREM zset1 three
(integer) 1
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "four"
4) "five"
127.0.0.1:6379> ZREMRANGEBYSCORE zset1 3 5
(integer) 2
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
客户端常用命令
127.0.0.1:6379> ping // 测试是否链接成功
PONG
// SELECT n 切换到第n个数据库 (1-16)
127.0.0.1:6379> SELECT 5 // 切换数据库
OK
127.0.0.1:6379[5]>
keys *