【2】基础知识类---Redis的操作命令
程序员文章站
2022-03-04 20:01:34
...
Redis操作命令
一、Redis服务端和客户端的命令
1.服务器端
命令 | 说明 |
---|---|
redis-server | 连接服务器端 |
redis-server –help | 查看帮助文档 |
ps aux | grep redis | 查看redis服务器进程 |
sudo kill -9 pid | 杀死redis服务器 |
sudo redis-server /etc/redis/redis.conf | 指定加载的配置文件 |
2.客户端
命令 | 说明 |
---|---|
redis-cli | 连接客户端 |
redis-cli –help | 查看帮助文档 |
ping | 运行测试 |
select 数据库的号码 | 切换数据库(编号为0-15) |
二、Redis数据结构
1.Redis数据结构
1)redis是key-value的数据结构,每条数据都是⼀个键值对
2)键的类型是字符串
,键不能重复
3)值的数据类型分为5种
- 字符串 string
- 哈希 hash
- 列表 list
- 集合 set
- 有序集合 zset
2.Redis数据操作
- 保存
- 修改
- 获取
- 删除
三、Redis数据操作
A.键的命令
命令 | 说明 |
---|---|
keys 正则表达式 | 查找键(指定键) |
exists 键名 | 判断键是否存在(存在返回1;不存在返回0) |
type 键名 | 查看键对应的value的类型 |
del 键名1 键名2 | 删除键及对应的值 |
expire 键名 秒数 | 设置过期时间,以秒为单位( 没有指定过期时间则⼀直存在,直到使⽤del移除) |
ttl 键名 | 查看有效时间,以秒为单位 |
举例:
1.
127.0.0.1:6379[15]> keys *
1) "name"
2) "name2"
3) "name3"
127.0.0.1:6379[15]> keys na*
1) "name"
2) "name2"
3) "name3"
2.
127.0.0.1:6379[15]> exists name0
(integer) 0
127.0.0.1:6379[15]> exists name
(integer) 1
3.
127.0.0.1:6379[15]> type name
string
4.
127.0.0.1:6379[15]> keys *
1) "name"
2) "name2"
3) "name3"
127.0.0.1:6379[15]> del name name2
(integer) 2
127.0.0.1:6379[15]> keys *
1) "name3"
5.
127.0.0.1:6379[15]> expire name3 3
(integer) 1
127.0.0.1:6379[15]> keys *
1) "name3"
127.0.0.1:6379[15]> keys *
(empty list or set)
6.
127.0.0.1:6379[15]> setex bb 10 bb
OK
127.0.0.1:6379[15]> ttl bb
(integer) 8
127.0.0.1:6379[15]> ttl bb
(integer) 3
B.值的命令
1.string字符串
1)增
命令 | 说明 |
---|---|
set 键名 值 | 设置键值 |
setex 键名 过期时间 值 | 设置键值及过期时间,以秒为单位 |
mset 键1 值1 键2 值2 | 设置多个键值 |
append 键名 值 | 追加值 |
2)删
删除键时,值也被删除
命令 | 说明 |
---|---|
del 键名1 键名2 | 删除键及对应的值 |
3)改
针对键原本已存在
命令 | 说明 |
---|---|
set 键名 值 | 设置键值 |
setex 键名 过期时间 值 | 设置键值及过期时间,以秒为单位 |
mset 键1 值1 键2 值2 | 设置多个键值 |
append 键名 值 | 追加值 |
4)查
命令 | 说明 |
---|---|
get 键名 | 根据键获取值(如果不存在,返回nil) |
mget 键名1 键名2 | 根据多个键获取多个值 |
2.hash哈希
- hash⽤于存储对象,对象的结构为属性、值
- 值的类型为string
1)增
命令 | 说明 |
---|---|
hset 键名 属性名 值 | 设置单个属性 |
hmset 键名1 属性名1 值1 属性名2 值2 | 设置多个属性 |
a.
127.0.0.1:6379[15]> hset user name shelleylu
(integer) 1
b.
127.0.0.1:6379[15]> hmset user name xiaohua age 18 height 166
OK
2)删
命令 | 说明 |
---|---|
del 键名1 键名2 | 删除整个hash键及值 |
hdel 键名 属性1 属性2 | 删除属性( 属性对应的值会被⼀起删除) |
a.
127.0.0.1:6379[15]> del user
(integer) 1
127.0.0.1:6379[15]> keys *
(empty list or set)
b.
127.0.0.1:6379[15]> hdel user age height
(integer) 2
127.0.0.1:6379[15]> hkeys user
1) "name"
3)改
命令 | 说明 |
---|---|
hset 键名 属性名 值 | 设置单个属性 |
hmset 键名1 属性名1 值1 属性名2 值2 | 设置多个属性 |
4)查
命令 | 说明 |
---|---|
hkeys 键名 | 获取指定键所有的属性 |
hget 键名 属性 | 获取⼀个属性的值 |
hmget 键名 属性1 属性2 | 获取多个属性的值 |
hvals 键名 | 获取所有属性的值 |
a.
127.0.0.1:6379[15]> hkeys user
1) "name"
2) "age"
3) "height"
b.
127.0.0.1:6379[15]> hget user name
"xiaohua"
c.
127.0.0.1:6379[15]> hmget user name age height
1) "xiaohua"
2) "18"
3) "166"
d.
127.0.0.1:6379[15]> hvals user
1) "xiaohua"
2) "18"
3) "166"
3.list列表
- 列表的元素类型为string
- 按照插⼊顺序排序
1)增
命令 | 说明 |
---|---|
lpush 键名 值1 值2 值3 | 在左侧插⼊数据 |
rpush 键名 值1 值2 值3 | 在右侧插⼊数据 |
linsert key before 现有元素 新元素 | 在指定元素的前插⼊新元素 |
linsert key after 现有元素 新元素 | 在指定元素的后插⼊新元素 |
a.
127.0.0.1:6379[15]> lpush list1 a b c
(integer) 3
127.0.0.1:6379[15]> lrange list1 0 3
1) "c"
2) "b"
3) "a"
127.0.0.1:6379[15]> lrange list1 0 2
1) "c"
2) "b"
3) "a"
b.
127.0.0.1:6379[15]> rpush list2 a b c
(integer) 3
127.0.0.1:6379[15]> lrange list2 0 -1
1) "a"
2) "b"
3) "c"
c.
127.0.0.1:6379[15]> linsert list1 before a aaa
(integer) 4
127.0.0.1:6379[15]> lrange list1 0 -1
1) "c"
2) "b"
3) "aaa"
4) "a"
d.
127.0.0.1:6379[15]> linsert list1 after a bbb
(integer) 5
127.0.0.1:6379[15]> lrange list1 0 -1
1) "c"
2) "b"
3) "aaa"
4) "a"
5) "bbb"
2)删
删除指定元素
- 将列表中前count次出现的值为value的元素移除
- count > 0: 从头往尾移除(添加时的右侧删除)
- count < 0: 从尾往头移除(添加时的左侧删除)
- count = 0: 移除所有
命令 | 说明 |
---|---|
lrem 键名 删除次数(+/-) 值 | 删除指定元素 |
a.
127.0.0.1:6379[15]> lpush list3 a b a b a b
(integer) 6
127.0.0.1:6379[15]> lrange list3 0 -1
1) "b"
2) "a"
3) "b"
4) "a"
5) "b"
6) "a"
127.0.0.1:6379[15]> lrem list3 2 a
(integer) 2
127.0.0.1:6379[15]> lrange list3 0 -1
1) "b"
2) "b"
3) "b"
4) "a"
b.
127.0.0.1:6379[15]> lpush list4 a b a b a b
(integer) 6
127.0.0.1:6379[15]> lrange list4 0 -1
1) "b"
2) "a"
3) "b"
4) "a"
5) "b"
6) "a"
127.0.0.1:6379[15]> lrem list4 -2 a
(integer) 2
127.0.0.1:6379[15]> lrange list4 0 -1
1) "b"
2) "a"
3) "b"
4) "b"
3)改
设置指定索引位置的元素值
- 索引从左侧开始,第⼀个元素为0
- 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素
命令 | 说明 |
---|---|
lset 键名 指定索引 值 | 设置指定索引位置的元素值(-1为最后一个元素) |
127.0.0.1:6379[15]> lpush list5 aaa bbb ccc
(integer) 3
127.0.0.1:6379[15]> lset list5 0 a
OK
127.0.0.1:6379[15]> lrange list5 0 -1
1) "a"
2) "bbb"
3) "aaa"
127.0.0.1:6379[15]> lset list5 2 c
OK
127.0.0.1:6379[15]> lrange list5 0 -1
1) "a"
2) "bbb"
3) "c"
4)查
返回列表⾥指定范围内的元素
- start、stop为元素的下标索引
- 索引从左侧开始,第⼀个元素为0
- 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
命令 | 说明 |
---|---|
lrange 键名 开始索引 结束索引 | 返回列表⾥指定范围内的元素(-1为最后一个元素) |
4.set无序集合
- ⽆序集合
- 元素为string类型
- 元素具有唯⼀性,不重复
- 说明:对于集合没有修改操作
1)增
命令 | 说明 |
---|---|
sadd 键名 元素1 元素2 | 添加元素 |
127.0.0.1:6379[15]> sadd set1 zs ww zs
(integer) 2
127.0.0.1:6379[15]> smembers set1
1) "zs"
2) "ww"
2)删
命令 | 说明 |
---|---|
srem 键名 元素 | 删除指定元素 |
127.0.0.1:6379[15]> srem set1 zs
(integer) 1
127.0.0.1:6379[15]> smembers set1
1) "ww"
3)查
命令 | 说明 |
---|---|
smembers 键名 | 返回所有的元素 |
127.0.0.1:6379[15]> smembers set1
1) "zs"
2) "ww"
5.zset有序集合
- sorted set,有序集合
- 元素为string类型
- 元素具有唯⼀性,不重复
- 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
- 说明:没有修改操作
1)增
命令 | 说明 |
---|---|
zadd 键名 权重1 值1 权重2 值2 权重3 值3 权重4 值4 | 添加有序集合 |
127.0.0.1:6379[15]> zadd zset1 4 zhangsan 5 lisi 3 wangwu 1 zhaosi
(integer) 4
127.0.0.1:6379[15]> zrange zset1 0 -1
1) "zhaosi" #权重最小
2) "wangwu"
3) "zhangsan"
4) "lisi" #权重最大
2)删
命令 | 说明 |
---|---|
zrem 键名 元素1 元素2 元素3 | 删除指定元素 |
127.0.0.1:6379[15]> zrem zset1 zhaosi wangwu
(integer) 2
127.0.0.1:6379[15]> zrange zset1 0 -1
1) "zhangsan"
2) "lisi"
3)查
返回指定范围内的元素
- start、stop为元素的下标索引
- 索引从左侧开始,第⼀个元素为0
- 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
命令 | 说明 |
---|---|
zrange 键名 开始索引 结束索引 | 返回指定范围内的元素 |
127.0.0.1:6379[15]> zrange zset1 0 -1
1) "zhangsan"
2) "lisi"
四、与python的交互
1.python中安装redis包的三种方式
1)进⼊虚拟环境py_django,联⽹安装包redis
pip install redis
2)进⼊虚拟环境py_django,联⽹安装包redis
easy_install redis
3)到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装(一步步执行)
wget https://github.com/andymccurdy/redis-py/archive/master.zip
unzip master.zip
cd redis-py-master
sudo python setup.py install
2.调用模块
引⼊模块 from redis import *
3.StrictRedis对象⽅法(连接redis)
sr = StrictRedis(host='localhost', port=6379, db=0)
#指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
简写
sr=StrictRedis()#创建StrictRedis对象,与redis服务器建⽴连接
五、框架中Django-Redis
1.安装
pip install django-redis
2.配置
CACHES = {
#作为 cache backend 使用配置
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://10.211.55.5:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
# 作为 session backend 使用配置
"session": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://10.211.55.5:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"
django-redis的说明文档链接为
六、Redis原生指令参考链接
七、Redis python客户端 方法参考链接
http://redis-py.readthedocs.io/en/latest/#indices-and-tables
上一篇: matlab 生成均匀等间距分布的散点圆
下一篇: redis的2种持久化方案深入讲解