Redis在Window服务下的启动和使用

开启服务端命令:redis-server.exe redis.windows.conf

开启客户端命令:redis-cli.exe -h 127.0.0.1(目标IP)  -p  6379(默认端口号,不建议修改) 

redis设置密码和修改端口教程:点击打开链接

Redis在Window服务下的启动和使用_第1张图片

Redis在Window服务下的启动和使用_第2张图片


在python中使用Redis

import redis
from redis import Redis
# 建立连接池:  
# 	redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。
# 默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,
# 这样就可以实现多个Redis实例共享一个连接池。
POOL=redis.ConnectionPool(host='127.0.0.1', port=6379)
CONN=redis.Redis(connection_pool=POOL)


#列表类型操作
CONN.rpush('lmw_list','a','b','c') #把列表发送的服务器的Redis上 右边开始  ['c' ,'b','a']
CONN.lpush("lmw_list",'a','b','c') #把列表发送的服务器的Redis上 左边开始  ['a' ,'b','c']


CONN.llen("lmw_origin") # 查询lmw_origin的长度
CONN.lpop("lmw_list")   # 取出lmw_list左边的值


CONN.delete("lmw_origin") # 删除列表


#字符串操作
CONN.set("lmw_reset",1)
CONN.get("lmw_reset")

Django-redis使用:
     import django_redis
     conn = django_redis.get_redis_connection()

 
  

Django-redis:封装好的redis连接池

一、安装:
	pip install django-redis

二、作为 cache backend 使用配置

in settings.py

	CACHES = {
	    "default": {
	        "BACKEND": "django_redis.cache.RedisCache",
	        "LOCATION": "redis://127.0.0.1:6379",
	        "OPTIONS": {
	            "CLIENT_CLASS": "django_redis.client.DefaultClient",
	            #套接字超时设置
	            #"SOCKET_CONNECT_TIMEOUT": 5,  # in seconds 
            	#"SOCKET_TIMEOUT": 5,  # in seconds

            	#配置默认连接池
            	# "CONNECTION_POOL_KWARGS": {"max_connections": 100},
	        }
	    }
	}

in view.py
	from django.core.cache import cache  
	def index(request):
		cache.set("busy", "python", timeout=60*60) # 超时单位:秒 
	    value = cache.get("busy")  # python

	    #django-redis 支持永不超时设置.
		    # timeout=0 立即过期
			# timeout=None 永不超时
			# cache.set("key", "value", timeout=None)

		# 使用通配符搜索 、删除
			# cache.keys("foo_*")  # 搜索 ["foo_1", "foo_2"]  
			# cache.delete_pattern("foo_*") # 删除 会返回删掉的键的数量

		# 查看连接池已经打开多少连接:
		# from django_redis import get_redis_connection
		# r = get_redis_connection("default")  
		# connection_pool = r.connection_pool
		# print("Created connections so far: %d" % connection_pool._created_connections)

Redis 拥有五种类型:String  list   set   zset(有序集合)  hash(哈希)

三、Hash操作
	conn.hset(name, key, value) #name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
	conn.hmset('xx', {'k1':'v1', 'k2': 'v2'})  #在name对应的hash中批量设置键值对
	conn.hget(name,key)  #在name对应的hash中获取根据key获取value
	conn.hmget('xx', 'k1', 'k2') #在name对应的hash中获取多个key的值

	hlen(name)  # 获取name对应的hash中键值对的个数
 	hgetall(name)  #获取name对应hash的所有键值

 	hvals(name)  # 获取name对应的hash中所有的value的值

 	hexists(name, key)  # 检查name对应的hash是否存在当前传入的key

 	hdel(name,*keys) # 将name对应的hash中指定key的键值对删除

 	hincrby(name, key, amount=1)  # 自增name对应的hash中的指定key的值,不存在则创建key=amount

 	hincrbyfloat(name, key, amount=1.0) # 自增name对应的hash中的指定key的值,不存在则创建key=amount

 	hscan(name, cursor=0, match=None, count=None) # 增量式迭代获取,对于数据大的数据非常有用,hscan可以实现分片的获取数据,
                                                      # 并非一次性将数据全部获取完,从而放置内存被撑爆

 	hscan_iter(name, match=None, count=None) # 利用yield封装hscan创建生成器,实现分批去redis中获取数据


四、String:
	set key value      设置指定 key 的值 set luo "哈哈"
	get key			   获取指定 key 的值。 get luo 

	getrange key start end  返回 key 中字符串值的子字符 getrange luo 0 1

	getset key value   将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

	MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。	

	SETNX key value    只有在 key 不存在时设置 key 的值。

	STRLEN key         返回 key 所储存的字符串值的长度。

	MSET key value [key value ...]   同时设置一个或多个 key-value 对。


五、list:
	BLPOP key1 [key2 ] timeout  移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	BRPOP key1 [key2 ] timeout  移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	LINDEX key index  			通过索引获取列表中的元素
	LLEN key    				获取列表长度
	LPOP key 					移出并获取列表的第一个元素

	LPUSH key value1 [value2]   将一个或多个值插入到列表头部
	LPUSHX key value 			将一个值插入到已存在的列表头部
	LRANGE key start stop       获取列表指定范围内的元素

	LREM key count value 		移除列表元素

	LSET key index value    	通过索引设置列表元素的值
	LTRIM key start stop 		对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

	RPOP key 					移除并获取列表最后一个元素
	RPUSH key value1 [value2]   在列表中添加一个或多个值
	RPUSHX key value 			为已存在的列表添加值




redis 相当于一台电脑的内存,访问速度快


redis一般跟数据库搭配使用。
	客户端请求数据,先去redis服务器找数据,没有去数据库找

缺点:
	1、如果一台电脑当做redis服务器,断电数据丢失
	2、存储容量有限

用途:
	1、redis可以做缓存
	2、redis可以做消息队列

特性:
	1、可以做数据持久化
	2、支持存放多种数据格式(5种)
		{
			"k1":"python" # "666"
			"k2": 666  # redis会转化给 “666”

			"k4":{ #redis只关注第一层的格式 
				"n1":'xxx', # 'xxx' 改为 {'a':1} ,这是我们定义格式,
				"n2":'iii'
			}
		}

本质:将数据保存到内存中









你可能感兴趣的:(Redis)