Redis的使用和常用数据类型
redis:单线程+异步IO
redis默认端口号:6379
yum安装版本较低
利用源码安装
redis-server --requirepass 123456 &>redis.log & #客户端操作需要口令验证
Linux安装Redis步骤和make遇到的坑 解决方案
redis安装过程中make遇到的问题如下:
解决办法:
[root@localhost redis-6.0.1]# gcc -v # 查看gcc版本
[root@localhost redis-6.0.1]# yum -y install centos-release-scl # 升级到9.1版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.1的话:
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
再次执行:make install PREFIX=/usr/local/redis
安装成功会出现:Hint: It's a good idea to run 'make test'
执行make test 进行测试,如果出现如下错误:
解决方法:
[root@localhost redis-6.0.1]# yum install tcl [root@localhost redis-6.0.1]# make test
linux知识回顾:
查看后台进程:jobs
把后台进程拿到前台:fg %1
远程连接:
redis-cli -h 10.10.10.130 -p 6379
输入命令:auth 密码,之后才可以使用
redis基于内存
set key value
get key
EX:有效期,通常用于验证码
ttl key:查看键值还能存在的剩余时间
命令:redis-benchmark #redis性能基准测试
键值对保存:
save
后台保存:bgsave
查看所有键:keys *
TYPE key
返回 key
所储存的值的类型。
返回值
-
none
(key不存在) -
string
(字符串) -
list
(列表) -
set
(集合) -
zset
(有序集) -
hash
(哈希表) -
stream
(流)
SELECT index
切换到指定的数据库,数据库索引号 index
用数字值指定,以 0
作为起始索引值。
默认使用 0
号数据库。
返回值
OK
代码示例
redis> SET db_number 0 # 默认使用 0 号数据库
OK
redis> SELECT 1 # 使用 1 号数据库
OK
redis[1]> GET db_number # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1]
(nil)
redis[1]> SET db_number 1
OK
redis[1]> GET db_number
"1"
redis[1]> SELECT 3 # 再切换到 3 号数据库
OK
redis[3]> # 提示符从 [1] 改变成了 [3]
FLUSHDB
清空当前数据库中的所有 key。
此命令从不失败。
返回值
总是返回 OK
。
代码示例
redis> DBSIZE # 清空前的 key 数量
(integer) 4
redis> FLUSHDB
OK
redis> DBSIZE # 清空后的 key 数量
(integer) 0
HSET hash field value
可用版本: >= 2.0.0
时间复杂度: O(1)
将哈希表 hash
中域 field
的值设置为 value
。
如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET
操作。
如果域 field
已经存在于哈希表中, 那么它的旧值将被新值 value
覆盖。
返回值
当 HSET
命令在哈希表中新创建 field
域并成功为它设置值时, 命令返回 1
; 如果域 field
已经存在于哈希表, 并且 HSET
命令成功使用新值覆盖了它的旧值, 那么命令返回 0
。
代码示例
设置一个新域:
redis> HSET website google "www.g.cn"
(integer) 1
redis> HGET website google
"www.g.cn"
对一个已存在的域进行更新:
redis> HSET website google "www.google.com"
(integer) 0
redis> HGET website google
"www.google.com"
利用python进行哈希校验:
hashlib包
利用迭代器优化上述代码: