redis介绍、安装以及数据类型

2022-10-05 18:35:36 浏览数 (1)

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

0 人点赞