Redis 客户端基本操作
2018-07-10 本文已影响0人
Manchangdx
Redis 是一个内存数据库,通过 Key-Value 键值对的方式存储数据
由于 Redis 的数据都存储在内存中,所以访问速度非常快
因此 Redis 大量用于缓存系统,存储热点数据
这样可以极大地提高网站的响应速度
相对于其它内存数据库,Redis 具有以下优点:
1、支持数据的持久化,通过配置可以将内存中的数据保存在磁盘中
Redis 启动以后自动将数据加载到内存中
2、支持字符串、字典 / 哈希、列表、集合、有序集合等数据结构
上面这些数据结构,指的是 Key-Value 键值对的 Value 的数据类型
3、原子操作,Redis 的所有操作都是原子性的
这使得基于 Redis 实现分布式锁非常简单
4、支持发布/订阅功能,数据过期功能
启动 Redis 服务:
mcdx@ubuntu:~$ sudo service redis-server start
启动客户端:
mcdx@ubuntu:~$ redis-cli
127.0.0.1:6379>
查看全部数据的 Key 值:
127.0.0.1:6379> keys * # 这三个是本来就有的,之前存的数据
1) "douban_movie:items"
2) "a"
3) "flask_doc:items"
127.0.0.1:6379> exists a # 判断 Key 是否存在
(integer) 1
127.0.0.1:6379> exists test
(integer) 0
127.0.0.1:6379> set haha ok
OK
127.0.0.1:6379> exists haha
(integer) 1
127.0.0.1:6379> del haha # 删除 Key 值,也就删除了这条数据
(integer) 1
127.0.0.1:6379> exists haha
(integer) 0
设置 Key 的过期时间,过期以后 Key 将被自动删除:
127.0.0.1:6379> expire a 22
(integer) 1
127.0.0.1:6379> ttl a # 查看 Key 的剩余生存时间
(integer) 20
127.0.0.1:6379> ttl a
(integer) 15
127.0.0.1:6379> ttl a
(integer) 9
127.0.0.1:6379> ttl a
(integer) -2
127.0.0.1:6379> exists a
(integer) 0
数据类型 - 字符串:
127.0.0.1:6379> set shiyanlou hello # 用 set 方法添加的 Value 就是字符串
OK
127.0.0.1:6379> type shiyanlou
string
127.0.0.1:6379> get shiyanlou
"hello"
数据类型 - 哈希 / 字典:
127.0.0.1:6379> hset haxi name Tom 创建哈希类型的数据
(integer) 1
127.0.0.1:6379> type haxi # 查看类型
hash
127.0.0.1:6379> hmset haxi age 11 email haxi@haha.com # 一次添加多个
OK
127.0.0.1:6379> hgetall haxi # 获得全部键值
1) "name"
2) "Tom"
3) "age"
4) "11"
5) "email"
6) "haxi@haha.com"
127.0.0.1:6379> hkeys haxi # 获得全部键
1) "name"
2) "age"
3) "email"
127.0.0.1:6379> hget haxi email # 获得某个键的值
"haxi@haha.com"
127.0.0.1:6379> hlen haxi # 查看键值对的数量
(integer) 3
数据类型 - 列表:
127.0.0.1:6379> lpush liebiao one two three
(integer) 3
127.0.0.1:6379> type liebiao # 查看数据类型
list
127.0.0.1:6379> lrange liebiao 0 -1 # 打印全部元素
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> llen liebiao # 列表长度
(integer) 3
数据类型 - 集合:
127.0.0.1:6379> sadd jihe James Kobe Wall Wade Bosh # 创建集合
(integer) 5
127.0.0.1:6379> smembers jihe # 查看集合内全部成员
1) "Kobe"
2) "Wade"
3) "Wall"
4) "James"
5) "Bosh"
127.0.0.1:6379> scard jihe # 集合内成员数量
(integer) 5
127.0.0.1:6379> srem jihe Kobe # 删除某个成员
(integer) 1
127.0.0.1:6379> smembers jihe
1) "Wade"
2) "Wall"
3) "James"
4) "Bosh"
127.0.0.1:6379> spop jihe # 随机删除某个成员并返回
"James"
127.0.0.1:6379> smembers jihe
1) "Wade"
2) "Bosh"
3) "Wall"
数据类型 - 有序集合:
# 创建有序集合
127.0.0.1:6379> zadd youxu 10 Nash 20 Durant 30 Curry 40 Irving
(integer) 4
127.0.0.1:6379> zcard youxu # 查看成员数量
(integer) 4
127.0.0.1:6379> zcount youxu 11 33 # 查看分数区间内成员数量,左闭右闭
(integer) 2
# 查看某成员的排名,按分数从小到大排,从 0 开始算
127.0.0.1:6379> zrank youxu Durant
(integer) 1
127.0.0.1:6379> zrevrank youxu Durant # 查看某成员的排名,从大到小排
(integer) 2
127.0.0.1:6379> zrem youxu Durant # 删除某成员
(integer) 1
127.0.0.1:6379> zscore youxu Durant # 查看某成员的分数
(nil)
127.0.0.1:6379> zscore youxu Irving
"40"
- 关于 5 种数据类型的应用场景简介
- Python 操作 Redis