欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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的操作命令

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的说明文档链接为

http://django-redis-chs.readthedocs.io/zh_CN/latest/

六、Redis原生指令参考链接

http://redisdoc.com/index.html

七、Redis python客户端 方法参考链接

http://redis-py.readthedocs.io/en/latest/#indices-and-tables

相关标签: redis