有时候我们需要向redis中写入含有中文的数据,然后在查看数据,但是会看到一些utf-8编码的字符,而不是我们写入的中文,这时候就要用下面的命令;

     redis-cli --raw

redis中常见的数据类型有5个.

 命令规则:  `命令 key 参数`
 1. string

     字符串(它自己认为是字符串, 我认为是任何东西. ), redis最基础的数据类型. 
     
     常用命令

     ```python
     set key value  # 添加一条数据
     get key		   # 查看一条数据
     incr key       # 让该key对应的数据自增1(原子性, 安全)
     incrby key count     # 让该key对应的value自增 count 
     type key		# 查看数据类型(set进去的东西一律全是字符串)
     ```
     例如
     ```python
     set name zhangsan  # 添加数据  name = zhangsan
     get name		# 查看数据 zhangsan
     set age 10
     get age 	# 10
     incr age	# 11
     get age 	# 11
     incrby age 5	# 16
 2. hash
     哈希, 相当于字典. 

     常见操作

     ```python
     hset key k1 v1   # 将k1, v1存储在key上
     hget key k1      # 将key上的k1提取出来
     hmset key k1 v1 k2 v2 k3 v3....  # 一次性将多个k,v存储在key
     hmget key k1 k2....# 一次性将key中的k1, k2...提取出来
     hgetall key 	# 一次性将key中所有内容全部提取
     hkeys key		# 将key中所有的k全部提取
     hvals key 		# 将key中所有的v全部提取
     ```

     示例:
     ```python
     HMSET stu id 1 name sylar age 18
     HMGET stu name age   # syalr 18
     HGETALL stu		    # id 1 name sylar age 18
     HKEYS stu 	# id name age
     HVALS stu   # 1 syalr 18
 3. list

     列表, 底层是一个双向链表. 可以从左边和右边进行插入. 记住每次插入都要记得这货是个==双向链表==

     常见操作

     ```python
     LPUSH key 数据1 数据2 数据3.... # 从左边插入数据
     RPUSH key 数据1 数据2 数据3.... # 从右边插入数据
     LRANGE key start stop     # 从start到stop提取数据. 
     LLEN key	# 返回key对应列表的长度
     LPOP key        # 从左边删除一个.并返回被删除元素
     RPOP key		# 从右边删除一个.并返回被删除元素
     ```

     示例:

     ```python
     LPUSH banji yiban erban sanban siban
     LRANGE banji 0 -1   # yiban erban sanban siban
     RPUSH ban ban1 ban2 ban3
     LRANGE ban 0 -1     # ban1 ban2 ban3
     LPOP ban  # ban1
     LLEN key  # 2
 4. set

     set是无序的超大集合. 无序, 不重复. 

     常见操作

     ```python
     SADD key 值   # 向集合内存入数据
     SMEMBERS key  # 查看集合内所有元素
     SCARD key # 查看key中元素的个数
     SISMEMBER key val  # 查看key中是否包含val
     SUNION key1 key2  # 并集
     SDIFF key1 key2  # 差集合, 在key1中, 但不在key2中的数据
     SINTER key1 key2 # 计算交集, 在key1和key2中都出现了的
     SPOP key  # 随机从key中删除一个数据
     SRANDMEMBER key count # 随机从key中查询count个数据
     ```
     实例:
     ```python
     SADD stars 柯震东 吴亦凡 张默 房祖名   # 4
     SADD stars 吴亦凡    # 0. 重复的数据是存储不进去的.
     SMEMBERS stars   # 柯震东 吴亦凡 张默 房祖名
     SISMEMBER stars 吴亦凡  # 吴亦凡在 stars里么?  1 在  0 不在
     
     SADD my 周杰伦 吴亦凡 房祖名  
     SINTER stars my  # 计算交集  吴亦凡 房祖名
     
     SPOP my  # 随机删除一个
     SRANDMEMEBER my 2   # 从集合总随机查看2个
 5. zset

     有序集合, 有序集合中的内容也是不可以重复的. 并且存储的数据也是redis最基础的string数据. 但是在存储数据的同时还增加了一个score. 表示分值. redis就是通过这个score作为排序的规则的. 

     常用操作

     ```python
     ZADD key s1 m1 s2 m2 ... # 向key中存入 m1 m2 分数分别为s1 s2
     ZRANGE key start stop [withscores]   # 查看从start 到stop中的所有数据 [是否要分数]
     ZREVRANGE key start stop # 倒叙查看start到stop的数据
     ZCARD key   # 查看zset的数据个数
     ZCOUNT key min max  # 查看分数在min和max之间的数据量
     ZINCRBY key score member  # 将key中member的分值score
     ZSCORE key m  # 查看key中m的分值
     
     ```
     示例:

     ```python
     ZADD fam 1 sylar 2 alex 3 tory  # 添加三个数据
     ZRANGE fam 0 -1 WITHSCORES # 正序查看
     ZREVRANGE fam 0 -1 WITHSCORES   # 倒叙查看
     ZINCRBY fam 10 alex  # 给alex加10分
     ZADD fam 100 alex   # 给alex修改分数为100分
     ZSCORE fam alex   # 查看alex的分数
     ZCARD fam    # 查看fam的数据个数
     redis还有非常非常多的操作.如果有需要可以去菜鸟编程
     https://www.runoob.com/redis/redis-tutorial.html
     数据保存完一定要save一下, 避免数据没有写入硬盘而产生的数据丢失