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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容