redis简单介绍
代码语言:javascript复制https://redis.io/
- 什么是redis?
remote dictionary server
, 远程字典服务. 顾名思义, redis的基础存储方式是键对值, 是一种常用的非关系型数据库. - redis的特点
- 内存操作, 相对于传统数据库从硬盘上读取数据速度, 快了一个数量级.
- redis服务是单线程工作模式, 不会产生一般的并发问题. 在我们使用多线程或者多进程去进行一般IO操作会发生读写冲突. 如果我们的多线程和多进程程序去读取redis消息队列当中的值时, 由于redis是单线程工作模式, 读事件和写事件都会按顺序执行, 避免了并发问题.
redis的安装
服务端
windows
代码语言:javascript复制https://github.com/microsoftarchive/redis
ubuntu
代码语言:javascript复制apt-get install redis-server
mac
代码语言:javascript复制brew install redis
客户端
windows
- redis-desktop
ubuntu
代码语言:javascript复制# 没有图形界面
apt-get install redis-cli
mac
代码语言:javascript复制medis
python连接
代码语言:javascript复制pip install redis
代码语言:javascript复制import redis
# 指定使用的database
redis_con = redis.Redis(host='localhost', port=6379, db=2)
redis的数据类型和CRUD
代码语言:javascript复制通过redis-cli命名进行连接
redis-cli -h localhost -p 6379
# 选择使用的数据库
C:UsersTuNan>redis-cli
127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]>
# 查看当前库下所有的key
127.0.0.1:6379[2]> keys *
String
Create
代码语言:javascript复制set key value
Retrieve
代码语言:javascript复制get key
Update
代码语言:javascript复制set key value
Delete
代码语言:javascript复制del key
Hash
Create
代码语言:javascript复制hset 变量名 key value
Retrieve
代码语言:javascript复制hget 变量名 key
Update
代码语言:javascript复制hset 变量名 key value
Delete
代码语言:javascript复制hdel 变量名 key
List
Create
代码语言:javascript复制lpush 变量名 value
Retrieve
通过索引取值
代码语言:javascript复制lindex 变量名 索引值
lindex 'list_test' 1
通过索引取一定范围的值
代码语言:javascript复制lrange 变量名 start end
lrange 'list_test' 0 2
Update
代码语言:javascript复制linsert 变量名 before[after] pivot value
linsert 'list_test' before 'a' 'b'
Delete
rpop
从右侧, 也就是list的末尾移除一个元素并返回
代码语言:javascript复制rpop 'list_test'
lpop
从左侧, 也就是头部移除一个元素并返回
lrem
删除一定数目的元素
代码语言:javascript复制lrem 变量名 删除个数, 删除元素
Set
Create
代码语言:javascript复制sadd 变量名 value
Retrieve
获取集合中的所有成员
代码语言:javascript复制smembers 变量名
判断当前元素是否在集合当中
代码语言:javascript复制sismember 变量名 value
sismember 'set_test' 2
返回随机数
代码语言:javascript复制srandmember 变量名 随机返回的数量
srandmember 'set_test' 2
Update
无
Delete
代码语言:javascript复制spop 变量名
Zset
有序集合
可以通过有序集合完成一个复杂的优先级队列
create
代码语言:javascript复制zadd 变量名 分数 value
Retrieve
返回当前成员数
代码语言:javascript复制zcard 'zset_test'
获取一定分数区间的成员数
代码语言:javascript复制zcount 变量名 min_score max_score
通过一定分数区间获取值
代码语言:javascript复制zrangebyscore 变量名 min_score max_score
zrangebyscore 'zset_test' 2 1
Update
加分
代码语言:javascript复制zincrby 变量 加分值 value
zincrby 'zset_test' 1 'b'
Delete
根据排名移除成员
代码语言:javascript复制zremrangebyrank 变量名 start stop
zremrangebyrank 'zset_test' 1 2
根据分数移除成员
代码语言:javascript复制zremrangebyscore 变量名 min_score max_score
zremrangebyscore 'zset_test' 2 2