Redis

No1:

MongoDB是文档存储,一般以json的格式存储。

Redis是key-value存储。

No2:

Redis键的类型永远是字符串,值可以是字符串、哈希hash、列表list、集合set、有序集合zset,数据操作命令可以查redis中文网站

No3:

redis官网是不支持win系统的,win系统版本要去github上下载https://github.com/MSOpenTech/redis/releases

下载后解压,配置环境变量,配置文件在redis.windows.conf

redis-server    运行redis服务器
redis-server --service-start    启动redis服务,一般启动一次就可以了
redis-cli    进入命令行模式

No4:

【string】

  • 最大能存储512MB数据
  • string类型是二进制安全的,即可以为任何数据,比如数字、图片、序列化对象等
复制代码
set key value    --设置键值
SETEX key seconds value    --设置键值及过期时间,以秒为单位
MSET key value [key value ...]    --设置多个键值

GET key    --根据键获取值,如果不存在此键则返回nil
MGET key [key ...]    --根据多个键获取多个值

APPEND key value       --追加值
STRLEN key    --获取值长度
复制代码

No5:

【键命令】

KEYS pattern    --查找键,参数支持正则
EXISTS key [key ...]    --判断键是否存在,如果存在返回1,不存在返回0
TYPE key    --查看键对应的value的类型
DEL key [key ...]    --删除键及对应的值
EXPIRE key seconds    --设置过期时间,以秒为单位
    创建时没有设置过期时间则一直存在,直到使用使用DEL移除            
TTL key    --查看有效时间,以秒为单位

No6:

【hash】

  • hash用于存储对象,对象的格式为键值对
复制代码
HSET key field value    --设置单个属性
HMSET key field value [field value ...]    --设置多个属性
HGET key field    --获取一个属性的值
HMGET key field [field ...]    --获取多个属性的值
HGETALL key    --获取所有属性和值
HKEYS key    --获取所有的属性
HLEN key    --返回包含属性的个数
HVALS key    --获取所有值
HEXISTS key field    --判断属性是否存在
HDEL key field [field ...]    --删除属性及值
HSTRLEN key field    --返回值的字符串长度
复制代码

No7:

【list】

  • 列表的元素类型为string
  • 按照插入顺序排序
  • 在列表的头部或者尾部添加元素
复制代码
LPUSH key value [value ...]    --在头部插入数据
RPUSH key value [value ...]    --在尾部插入数据
LINSERT key BEFORE|AFTER pivot value    --在一个元素的前|后插入新元素
LSET key index value    --设置指定索引的元素值
        索引是基于0的下标
        索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素

LPOP key    --移除并且返回 key 对应的 list 的第一个元素
RPOP key    --移除并返回存于 key 的 list 的最后一个元素
LRANGE key start stop    --返回存储在 key 的列表里指定范围内的元素
        start 和 end 偏移量都是基于0的下标
        偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素

LTRIM key start stop    --裁剪列表,改为原集合的一个子集
        start 和 end 偏移量都是基于0的下标
        偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素
LLEN key       --返回存储在 key 里的list的长度
LINDEX key index    --返回列表里索引对应的元素
复制代码

No8:

【set】

  • 无序集合
  • 元素为string类型
  • 元素具有唯一性,不重复
SADD key member [member ...]    --添加元素
SMEMBERS key    --返回key集合所有的元素
SCARD key    --返回集合元素个数

SINTER key [key ...]    --求多个集合的交集
SDIFF key [key ...]    --求某集合与其它集合的差集
SUNION key [key ...]    --求多个集合的合集
SISMEMBER key member    --判断元素是否在集合中

No9:

【zset】

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯一性,不重复
  • 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
  • 元素的score可以相同
ZADD key score member [score member ...]    --添加
ZRANGE key start stop    --返回指定范围内的元素
ZCARD key    --返回元素个数
ZCOUNT key min max    --返回有序集key中,score值在min和max之间的成员
ZSCORE key member    --返回有序集key中,成员member的score值

No10:

【发布订阅】

  • 推送消息的格式包含三部分
  • part1:消息类型,包含三种类型
    • subscribe,表示订阅成功
    • unsubscribe,表示取消订阅成功
    • message,表示其它终端发布消息
  • 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
  • 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
  • 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
SUBSCRIBE 频道名称 [频道名称 ...]    --订阅
UNSUBSCRIBE 频道名称 [频道名称 ...]    --取消订阅,如果不写参数,表示取消所有订阅
PUBLISH 频道 消息    --发布

No11:

【主从配置】

复制代码
一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器

--设置主服务器的配置
bind 192.168.1.10    
--设置从服务器的配置
注意:在slaveof后面写主机ip,再写端口,而且端口必须写
bind 192.168.1.11
slaveof 192.168.1.10 6379    
复制代码

No12:

【与python交互】

复制代码
import redis
try:
    r=redis.StrictRedis(host='localhost',port=6379)
except Exception,e:
    print e.message

-----1
r.set('name','hello')
r.get('name')

----2
pipe = r.pipeline()
pipe.set('name', 'world')
pipe.get('name')
pipe.execute()
复制代码
复制代码
----封装
import redis
class RedisHelper():
    def __init__(self,host='localhost',port=6379):
        self.__redis = redis.StrictRedis(host, port)
    def get(self,key):
        if self.__redis.exists(key):
            return self.__redis.get(key)
        else:
            return ""
    def set(self,key,value):
        self.__redis.set(key,value)
复制代码

No13:

【用户登录模块】

复制代码
#encoding=utf-8
from t2 import RedisHelper
from t3 import MysqlHelper
import hashlib

name=raw_input("请输入用户名:")
pwd=raw_input("请输入密码:")

sha1=hashlib.sha1()
sha1.update(pwd)
pwd1=sha1.hexdigest()

try:
    redis=RedisHelper()
    if redis.get('uname')==name:
        print 'ok'
    else:
        mysql=MysqlHelper('localhost',3306,'test1','root','mysql')
        upwd=mysql.get_one('select upwd from userinfos where uname=%s',[name])
        if upwd==None:
            print '用户名错误'
        elif upwd[0]==pwd1:
            redis.set('uname', name)
            print '登录成功'
        else:
            print "密码错误"
except Exception,e:
    print e.message
复制代码

 

posted @   嘉禾世兴  阅读(200)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-11-20 顶部搜索框背景色渐变
点击右上角即可分享
微信分享提示