redis最全教程

Redis
redis是一个完全免费的,遵守BSD协议的,高性能的key-value数据库。
BSD满足三个条件:
1.如果再次发布的产品中包含源代码,则在源代码中必须包含原来代码中的BSD协议
2.如果再次发布的是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码的BSD协议
3.不可以用开源代码的作者/机构名字和原产品的名字做市场推广

redis特点
1.redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次使用
2.redis不仅支持简单key-value类型数据,同时还提供多种数据结构存储
3.redis支持数据的备份,即master-slave模式的数据备份

redis优势
1.性能极高:redis读速110000次/s,写速81000次/s
2.丰富的数据类型:string,list…
3.原子:redis的所有操作都是原子性的,意思就是要么成功执行,要么失败完全不执行。单个操作是原子性的,多个操作也支持事物,即原子性。
4.丰富的特性:redis通知,key过期等特性

redis
安装
sudo apt-get install redis-server

启动redis
redis-server

redis命令行
redis-cli

在远程服务上执行命令
redis-cli -h host -p port -a password

redis相关信息查看
redis-benchmark --help

测试redis
redis-benchmark -n 1000000 -q

使用
常用命令
存数据(OK) demo
SET key value SET A AAAAAA
获取数据(value)
GET key GET A
获取多条key(多个value)
MGET key1 key2 MGET A B
检查key值是否存在(存在1,不存0)
EXISTS key EXISTS A
获取key所存的字符串长度(字符串长度)
STRLEN key STRLEN A
获取指定key值所对应的字符串中子字符串(子字符串)
GETRANGE key start end GETRANGE A 2 4
删除(删除成功1,失败0)
DEL key
设定过期时间(设定成功1)
EXPIRE key second EXPIRE B 600
查询key剩余时间(剩余时间,无过期时间-1,过期-2)
TTL key TTL B
以毫秒设定过期时间(设定成功1)
PEXPIRE key millisecond PEXPIRE B 60000
以毫秒查询key剩余时间(以毫秒返回剩余时间,无过期时间-1,过期-2)
PTTL key PTTL B
移除过期时间(成功1)
PERSIST key PERSIST B
重命名(OK)
RENAME key newkey RENAME A T
随机返回KEY值 (?“key:rand_int”)
RANDOMKEY
获取key所存储的类型
TYPE key
更改指定key值value(返回key值原有的value)
GETSET key newvalue GETSET A BBBBB

HASH
存储hash值
HMSET key field value
demo
HMSET TEACHER name “wanglaoshi” age 37 sex 0

获取hash表中key值所有的字段和值(字段和值)
HGETALL key HGETALL TEACHER
获取存储在hash表中的指定字段的值
HGET key field HGET TEACHER name
删除指定key下保存的hash表中指定的field的值
HDEL key field HDEL TEACHER sex
查询指定key下保存的hash是否存在指定字段
HEXISTS key field HEXISTS TEACHER name
获取指定key下存储的hash表中全部字段
HKEYS key
获取指定key下存储的hash表中全部值
HVALS key

列表
在列表中添加一个或多个值(返回列表元素个数)
RPUSH key value [value1 value2…]
RPUSH AL wang lao shi
获取列表长度
LLEN key LLEN AL
通过索引获取列表中元素
LINDEX key index LINDEX AL 1
通过索引设置列表中指定元素的值
LSET AL index value LSET AL 1 “xiao”
在列表元素前或者后插入一个元素
LINSERT key BEFORE|AFTER pivot value
LINSERT AL BEFORE “shuai” “bu”
(?插入一个bu到第二个wang前)
获取列表指定范围内元素
LRANGE key start end LRANGE AL 0 -1
将一个或多个元素插入列表头部
LPUSH key value [value1 value2]
LPUSH AL shuai qi de
移出并获取列表第一个元素
LPOP key
LPOP AL
移出并获取列表最后一个元素
RPOP key
RPOP AL

redis有序集合
向有序集合添加一个或多个成员,或者更新已存在成员分数
ZADD key score1 member1 [score2 member2]
ZADD ABC 3 wang
获取有序集合的成员数
ZCARD key ZCARD ABC
获取成员分数值
ZSCORE key member ZSCORE ABC wang
通过索引区间返回有序集合指定区间内成员及分数
ZRANGE key start end WITHSCORES
ZRANGE ABC 0 -1 WITHSCORES
移除有序集合中指定的成员
ZREM key member ZREM ABC li
向指定的有序集合中指定成员增加分数
ZINCRBY key increment member
ZINCRBY ABC 2 wang

redis 事务
redis事务是指一次执行多个命令
两个重要的保证:
全部指令进行入列缓存,统一执行,任意一条指令执行失败,其余指令依然被执行
事务执行过程中,其他客户端提交指令请求不会被插入到事务执行命令序列中

一个事务从开始到执行经历三个阶段:
开始事务
命令入列
执行事务
demo
开始事务
MULTI
命令入列
SET T TTTTTTTT
SET Y YYYYYYYY
SET O OOOOOOO
GET T
GET Y
GET O
执行事务
EXEC

连接方式
严格连接模式:r=redis.StrictRedis(host="",port=)
更加python化的模式:r=redis.Redis(host="",port=)

连接池:
为了节省资源,减少多次连接损耗,连接池作用相当于总揽多个客户端与服务端的连接,当新的客户端需要连接时,只需要到连接池里获取一个连接即可,实际上只是一个连接共享给多个客户端

demo
import redis
pool = redis.ConnectionPool(host=‘localhost’,port=6379,decode_responses=True)
r = redis.Redis(connection_pool=pool)
r2 = redis.Redis(connection_pool=pool)
r.set(‘apple’,‘a’)
print(r.get(‘apple’))
r2.set(‘banana’,‘b’)
print(r2.get(‘banana’))

print(r.client_list())
print(r2.client_list())

管道
一般情况下,执行一条命令必须等待结果才能执行下一条,管道用于在一次请求中执行多个指令

python中管道可以替代事务

redis django
安装
pip3 install django-redis

使用
settings.py:

CACHE = {
‘default’:{
‘BACKEND’:‘django_redis.cache.RedisCache’,
‘LOCATION’:‘127.0.0.1:6379’,
‘OPTIONS’:{
‘CLIENT_CLASS’:‘django_redis.client.DefaultClient’,
},

},

}

REDIS_TIME = 7246060
CUBES_REDIS_TIMEOUT = 60
60
NEVER_REDIS_TIMEOUT = 3652460*60

方法缓存
@cache_page(20)
def…

站点缓存
MIDDLEWARE = [
‘django.middleware.cache.UpdateCacheMiddleware’,

‘django.middleware.cache.FetchFromCacheMiddleware’
]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值