redis常用操作

#Linux 下安装

1.安装

-----

wget http://download.redis.io/releases/redis-2.8.17.tar.gz

tar xzf redis-2.8.17.tar.gz

cd redis-2.8.17

make

2.启动redis服务

------

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

$ cd src

$ ./redis-server

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ cd src

$ ./redis-server ../redis.conf

-----------

redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

requirepass heng #requirepass 配置密码 heng

------------

启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

$ cd src

$ ./redis-cli --raw 加raw防止中文乱码

redis> AUTH heng #配置密码后要登录

redis> set foo bar

OK

redis> get foo

"bar"

详细请参考:https://www.runoob.com/redis/redis-tutorial.html

--------

#设置密码

通过以下命令查看是否设置了密码验证:

CONFIG get requirepass

1) "requirepass"

2) ""

默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。

你可以通过以下命令来修改该参数:

127.0.0.1:6379> CONFIG set requirepass "heng"

OK

127.0.0.1:6379> CONFIG get requirepass

1) "requirepass"

2) "heng"

设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。

#密码登录

AUTH heng

3.常用命令

help set 查看命令详细

keys * # * 查看所有key ,a* 查以a开头的key

#删除 (注:一般都是成功返回 1 失败返回 0)

del key

#检查key是否存在

exists key

#返回 key 所储存的值的类型

type key

#修改 key 的名称

rename key newkey

#仅当 newkey 不存在时,将 key 改名为 newkey

renamenx key newkey

#为给定 key 设置过期时间,以秒计

EXPIRE key 3

#移除 key 的过期时间,key 将持久保持。

PERSIST key

#切换到指定的数据库db 注:默认是16个,最多填15,默认是0

select 1

#将当前数据库的 key 移动到给定的数据库 db 当中。注:两个数据库有相同的 key 则移动失败

MOVE key 1

#以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)

TTL key

#从当前数据库中随机返回一个 key

RANDOMKEY

#删除当前数据库所有 key

FLUSHDB

#查看服务是否运行

PING

#关闭当前连接

QUIT

#同步保存数据到硬盘

SAVE

#删除所有数据库的所有key

FLUSHALL

#删除当前数据库的所有key

FLUSHDB

# string

--------

#设置

set key value 如:ex 3

参数:设置超时时间: ex 秒 px 毫秒 nx 没有值时才设置 xx 只有有值才设置

mset key value key value #批量设置

getset key value #设置的同时可以得到旧数据

setrange key 3 value  #从第三位后设置

#获取

get key

mget key key #批量获取

getrange key 0 3 #切片获取

#二进制操作用法(可用于根据id判断是否登录,登录设置为1,原理是全部设为零根据位数设置获取对应值)

setbit user 3 1 #设置二进制第三位为1

getbit user 3 #获取位数值 #当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0

bitcount user #获取设置为1的个数

#将 key 中储存的数字值增一

incr key

# Hash

---------

hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

#设置

hset obj key value # obj 对象名

#批量设置

hset obj key value key value

#获取

hget obj key

hmget obj key key #批量获取

hgetall obj #获取所有

#获取对象key数

hlen obj

#获取对象key

hkeys obj

#获取对象key值

hvals obj

#判断是否存在

hexists info key

#删除哈希表 key 中的一个或多个指定字段

hdel info key key

#设置自增

hincrby obj id 1

#模糊查询

hscan obj 0 match *a* #查询obj里从0开始查找带a的key

---------

# list

#添加

lpush arr value vlaue # arr 列表名

lpushx arr value # 只有arr存在才能添加

#获取 arr 0 到 10 的数据

lrange arr 0 10

#获取列表长度

llen key

#通过索引获取列表中的元素

lindex key index

#在列表的元素前或者后插入元素(before | after)

linsert arr before 11 10 #把10插到11之前

#设置值

lset arr 0 11 # 0 是索引 11 是值

#删除

lrem arr 0 11 #删除所有值为11的数据, 0 是所有,大于0是从头往后搜几位,小于0是从后往前几位

#移出并获取列表的第一个元素

lpop key

#移除列表的最后一个元素,返回值为移除的元素

rpop key

---------

# set

#添加

sadd key value value

#获取集合的成员数

scard key

#返回集合中的所有成员

smembers key

#移除集合中一个或多个成员

srem key value vlaue

#返回给定所有集合的差集

sdiff key1 key2

#返回给定所有集合的交集

sinter key1 key2

#返回所有给定集合的并集

sunion key1 key2

#判断 member 元素是否是集合 key 的成员

sismember key member

#返回集合中一个或多个随机数

srandmember myset1 2

#将 member 元素从 source 集合移动到 destination 集合

smove source destination member

#返回给定所有集合的差集并存储在 destination 中

SDIFFSTORE destination key1 [key2]

#返回给定所有集合的交集并存储在 destination 中

SINTERSTORE destination key1 [key2]

#所有给定集合的并集存储在 destination 集合中

SUNIONSTORE destination key1 [key2]

--------

#有序集合

#向有序集合添加一个或多个成员,或者更新已存在成员的分数

zadd key 1 one 2 two # 1 2 是设置权重分数

#获取有序集合的成员数

ZCARD key

#计算在有序集合中指定区间分数的成员数

ZCOUNT key min max

#移除有序集合中的一个或多个成员

ZREM key member [member ...]

#返回有序集合中指定成员的索引

ZRANK key member

#返回有序集中,成员的分数值

ZSCORE key member

#返回成员分数

zscore

#通过索引区间返回有序集合指定区间内的成员

zrange key 0 -1

#返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

ZREVRANK key member

#返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。

ZRANGEBYSCORE salary 5000 4000001 # 显示工资大于 5000 小于等于 400000 的成员

--------

#订阅发布

#订阅一个或多个符合给定模式的频道

PSUBSCRIBE pattern [pattern ...] 例:psubscribe test

#订阅给定的一个或多个频道的信息

SUBSCRIBE channel [channel ...] 例:subscribe test

#查看订阅与发布系统状态,由活跃频道组成的列表

PUBSUB subcommand [argument [argument ...]] 例:pubsub test

#将信息发送到指定的频道

PUBLISH channel message 例:publish test '老铁666'

#退订所有给定模式的频道

PUNSUBSCRIBE [pattern [pattern ...]]  例:punsubscribe test

#指退订给定的频道

UNSUBSCRIBE [channel [channel ...]] 例:unsubscribe test

---------------

python连接redis

pip3 install redis #安装

------------

# 普通连接

import redis

r=redis.Redis(host="192.168.219.129",port=6379,password="heng",db=0)

r.set("test","hello",ex=5) # ex代表秒,px代表毫秒

val = r.get("test")

print(val)

# 连接池管道方式,相当于事务(效率最高)

pool = redis.ConnectionPool(host="192.168.219.129", port=6379,password="heng",max_connections=1024)

r = redis.Redis(connection_pool=pool)

pipe=r.pipeline(transaction=True)

pipe.get("test")

pipe.keys("*")

v=pipe.execute() #执行

print(v)

-----

#发送订阅用法

import redis

class RedisHelper:

    def __init__(self):

        pool = redis.ConnectionPool(host="192.168.219.129", port=6379,password="heng",db=0)

        self.__conn=redis.Redis(connection_pool=pool)

        self.chan_sub='test1'

        self.chan_pub='test1'

    def publish(self,msg): #将信息发送到指定的频道

        self.__conn.publish(self.chan_pub,msg)

        return True

    def subscribe(self): #订阅给定的一个或多个频道的信息

        pub=self.__conn.pubsub() #初始化监听

        pub.subscribe(self.chan_sub) #设置地址

        pub.parse_response() #准备监听

        return pub


obj=RedisHelper()

#发送

obj.publish('测试数据')

#监听

redis_sub=obj.subscribe()

while True:

    msg=redis_sub.parse_response() #阻塞模式,没消息就等待

    print('message=>',msg)

------------

django里使用redis

#安装

pip install django-redis

# settings.py中加入以下内容

CACHES = {

    'default': {

        'BACKEND': 'django_redis.cache.RedisCache',

        'LOCATION': 'redis://127.0.0.1:6379', #连接ip

        "OPTIONS": {

            "CLIENT_CLASS": "django_redis.client.DefaultClient",

            "PASSWORD": "password123", #密码

        },

    },

}

#使用

from django.core.cache import cache #引入缓存模块

val = cache.get("test")

print(val)

-----------

#Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统

#Celery的安装配置

pip install celery

你可能感兴趣的:(redis常用操作)